Powershell - Краткое руководство
Windows PowerShell - это command-line shell и scripting languageразработан специально для системного администрирования. Его аналог в Linux называется Bash Scripting. Windows PowerShell, созданный на основе .NET Framework, помогает ИТ-специалистам контролировать и автоматизировать администрирование операционной системы Windows и приложений, работающих в среде Windows Server.
Команды Windows PowerShell, называемые cmdlets, позволяют управлять компьютерами из командной строки. Поставщики Windows PowerShell позволяют получить доступ к хранилищам данных, например к реестру и хранилищу сертификатов, так же легко, как и к файловой системе.
Кроме того, Windows PowerShell имеет богатый синтаксический анализатор выражений и полностью разработанный язык сценариев. Так что простыми словами вы можете выполнять все задачи, которые вы делаете с помощью графического интерфейса, и многое другое.
PowerShell ISE
Оболочка Windows PowerShell Integrated Scripting Environment(ISE) - это ведущее приложение для Windows PowerShell. В Windows PowerShell ISE вы можете запускать команды и писать, тестировать и отлаживать сценарии в едином графическом пользовательском интерфейсе на основе Windows с многострочным редактированием, завершением табуляции, раскраской синтаксиса, выборочным выполнением, контекстно-зависимой справкой и поддержкой права на доступ. -левые языки.
Вы можете использовать элементы меню и сочетания клавиш для выполнения многих из тех задач, которые вы выполняете в консоли Windows PowerShell. Например, при отладке сценария в среде Windows PowerShell ISE, чтобы установить точку останова по строке в сценарии, щелкните строку кода правой кнопкой мыши и выберитеToggle Breakpoint.
Основные команды PowerShell
Команд PowerShell очень много, и в этом руководстве очень сложно ввести все эти команды, мы сосредоточимся на некоторых из наиболее важных, а также на основных командах PowerShell.
Первый шаг - перейти к команде Get-Help, которая дает вам объяснение того, как дать команду и ее параметр.
Значок PowerShell можно найти на панели задач и в меню «Пуск». Просто щелкнув значок, он откроется.
Чтобы открыть его, просто щелкните значок, и откроется следующий экран, означающий, что PowerShell готов к работе.
Версия PowerShell
Последняя версия PowerShell - 5.0, и чтобы проверить, что установлено на нашем сервере, мы набираем следующую команду - :$PSVersionTable как показано на следующем снимке экрана, мы также знаем, что у нас есть PSVersion 4.0.
Чтобы обновить последнюю версию, в которой есть больше командлетов, мы должны загрузить Windows Management Framework 5.0 по следующей ссылке - https://www.microsoft.com/en-us/download/details.aspx?id=50395 и установите его.
PowerShell ISE
Оболочка Windows PowerShell Integrated Scripting Environment(ISE) - это ведущее приложение для Windows PowerShell. В Windows PowerShell ISE вы можете запускать команды и писать, тестировать и отлаживать сценарии в едином графическом пользовательском интерфейсе на основе Windows с многострочным редактированием, завершением табуляции, раскраской синтаксиса, выборочным выполнением, контекстно-зависимой справкой и поддержкой права на доступ. -левые языки.
Вы можете использовать элементы меню и сочетания клавиш для выполнения многих из тех задач, которые вы выполняете в консоли Windows PowerShell. Например, при отладке сценария в среде Windows PowerShell ISE, чтобы установить точку останова по строке в сценарии, щелкните строку кода правой кнопкой мыши и выберитеToggle Breakpoint.
Чтобы открыть его, просто перейдите в Пуск - Поиск, а затем введите - PowerShell, как показано на следующем снимке экрана.
Затем щелкните Windows PowerShell ISE. Или щелкните стрелку вниз, как показано на следующем снимке экрана.
Он перечислит все приложения, установленные на сервере, а затем щелкните Windows PowerShell ISE.
Следующая таблица будет открыта -
Он состоит из трех разделов, которые включают: PowerShell Console с номером 1, то Scripting File номер 2, а третий - Command Module где вы можете найти модуль.
При создании скрипта вы можете запустить его напрямую и увидеть результат, как в следующем примере:
Основные команды PowerShell
Команд PowerShell очень много, и в этом руководстве очень сложно ввести все эти команды, мы сосредоточимся на некоторых из наиболее важных, а также на основных командах PowerShell.
Первый шаг - перейти к команде Get-Help, которая дает вам объяснение того, как дать команду и ее параметр.
To get the list of Updates -
- Get-HotFix и установить горячее исправление следующим образом
- Get-HotFix -id kb2741530
Командлет или «Command let» - это упрощенная команда, используемая в среде Windows PowerShell. Среда выполнения Windows PowerShell вызывает эти командлеты в командной строке. Вы можете создавать и вызывать их программно через API-интерфейсы Windows PowerShell.
Командлет против команды
Командлеты сильно отличаются от команд в других средах командной оболочки следующим образом:
Командлеты - это объекты классов .NET Framework; а не только автономные исполняемые файлы.
Командлеты можно легко построить из нескольких десятков строк кода.
Командлеты не обрабатывают синтаксический анализ, представление ошибок и форматирование вывода. Это выполняется средой выполнения Windows PowerShell.
Процесс командлетов работает с объектами не в текстовом потоке, и объекты могут быть переданы как выходные данные для конвейерной обработки.
Командлеты основаны на записях, поскольку они обрабатывают один объект за раз.
Получать помощь
Первый шаг - перейти к команде Get-Help, которая дает вам объяснение того, как дать команду и ее параметр.
Ниже приведены примеры сценариев PowerShell для файлов и папок.
Sr.No. | Работа и описание |
---|---|
1 | Создание папок Пример сценария, показывающий, как создавать папки с помощью сценариев PowerShell. |
2 | Создание файлов Пример сценария, показывающий, как создать файл (ы) с помощью сценариев PowerShell. |
3 | Копирование папок Пример сценария, показывающий, как копировать файл (ы) с помощью сценариев PowerShell. |
4 | Копирование файлов Пример сценария, показывающий, как создать файл (ы) с помощью сценариев PowerShell. |
5 | Удаление папок Пример сценария, показывающий, как удалить папку (и) с помощью сценариев PowerShell. |
6 | Удаление файлов Пример сценария, показывающий, как удалить файл (ы) с помощью сценариев PowerShell. |
7 | Перемещение папок Пример сценария, показывающий, как перемещать папки с помощью сценариев PowerShell. |
8 | Перемещение файлов Пример сценария, показывающий, как перемещать файлы с помощью сценариев PowerShell. |
9 | Переименовать папки Пример сценария, показывающий, как переименовать папку (и) с помощью сценариев PowerShell. |
10 | Переименовать файлы Пример сценария, показывающий, как переименовать файл (ы) с помощью сценариев PowerShell. |
11 | Получение предмета Пример сценария, показывающий, как получить элемент (ы) с помощью сценариев PowerShell. |
12 | Проверить существование папки Пример сценария, показывающий, как проверить наличие папки с помощью сценариев PowerShell. |
13 | Проверить наличие файла Пример сценария, показывающий, как проверить наличие файла с помощью сценариев PowerShell. |
Ниже приведены примеры сценариев PowerShell для системной даты и времени.
Sr.No. | Работа и описание |
---|---|
1 | Получить системную дату Пример сценария, показывающий, как получить системную дату с помощью сценариев PowerShell. |
2 | Установить системную дату Пример сценария, показывающий, как установить системную дату с помощью сценариев PowerShell. |
3 | Получить системное время Пример сценария, показывающий, как получить системное время с помощью сценариев PowerShell. |
4 | Установить системное время Пример сценария, показывающий, как установить системное время с помощью сценариев PowerShell. |
Ниже приведены примеры сценариев PowerShell для создания и чтения различных типов файлов.
Sr.No. | Работа и описание |
---|---|
1 | Создать текстовый файл Пример сценария, показывающий, как создать текстовый файл с помощью сценариев PowerShell. |
2 | Читать текстовый файл Пример сценария, показывающий, как читать текстовый файл с помощью сценариев PowerShell. |
3 | Создать файл XML Пример сценария, показывающий, как создать XML-файл с помощью сценариев PowerShell. |
4 | Читать XML-файл Пример сценария, показывающий, как читать XML-файл с помощью сценариев PowerShell. |
5 | Создать файл CSV Пример сценария, показывающий, как создать файл CSV с помощью сценариев PowerShell. |
6 | Читать файл CSV Пример сценария, показывающий, как читать файл CSV с помощью сценариев PowerShell. |
7 | Создать HTML-файл Пример сценария, показывающий, как создать файл HTML с помощью сценариев PowerShell. |
8 | Читать HTML-файл Пример сценария, показывающий, как читать HTML-файл с помощью сценариев PowerShell. |
9 | Удаление содержимого файла Пример сценария, показывающий, как удалить содержимое файла с помощью сценариев PowerShell. |
10 | Добавить текстовые данные Пример сценария, показывающий, как добавить текст к содержимому файла с помощью сценариев PowerShell. |
Командлеты
Командлет или «Command let» - это упрощенная команда, используемая в среде Windows PowerShell. Среда выполнения Windows PowerShell вызывает эти командлеты в командной строке. Вы можете создавать и вызывать их программно через API-интерфейсы Windows PowerShell. Ниже приведены расширенные примеры использования командлетов.
Sr.No. | Тип и описание командлета |
---|---|
1 | Командлет Get-Unique Пример программы для демонстрации командлета Get-Unique. |
2 | Group-Object Cmdlet Пример программы для демонстрации командлета Group-Object. |
3 | Командлет "Измерение-объект" Пример программы для демонстрации командлета Measure-Object. |
4 | Командлет Compare-Object Пример программы для демонстрации командлета Compare-Object. |
5 | Командлет Format-List Пример программы для демонстрации командлета Format-List. |
6 | Широкоформатный командлет Пример программы для демонстрации широкоформатного командлета. |
7 | Командлет Where-Object Пример программы для демонстрации командлета Where-Object. |
8 | Командлет Get-ChildItem Пример программы для демонстрации командлета Get-ChildItem. |
9 | Командлет ForEach-Object Пример программы для демонстрации командлета ForEach-Object. |
10 | Командлет Start-Sleep Пример программы для демонстрации командлета Start-Sleep. |
11 | Командлет Read-Host Пример программы для демонстрации командлета Read-Host. |
12 | Командлет Select-Object Пример программы для демонстрации командлета Select-Object. |
13 | Командлет Sort-Object Пример программы для демонстрации командлета Sort-Object. |
14 | Командлет предупреждения о записи Пример программы для демонстрации командлета предупреждения о записи. |
15 | Командлет Write-Host Пример программы для демонстрации командлета Write-Host. |
16 | Командлет Invoke-Item Пример программы для демонстрации командлета Invoke-Item. |
17 | Командлет Invoke-Expression Пример программы для демонстрации командлета Invoke-Expression. |
18 | Командлет Measure-Command Пример программы для демонстрации командлета Measure-Command. |
19 | Командлет Invoke-History Пример программы для демонстрации командлета Invoke-History. |
20 | Командлет Add-History Пример программы для демонстрации командлета истории добавления. |
21 год | Командлет Get-History Пример программы для демонстрации командлета Get-History. |
22 | Командлет Get-Culture Пример программы для демонстрации командлета Get-Culture. |
Windows PowerShell - это command-line shell и scripting languageразработан специально для системного администрирования. Его аналог в Linux называется Bash Scripting. Windows PowerShell, созданный на основе .NET Framework, помогает ИТ-специалистам контролировать и автоматизировать администрирование операционной системы Windows и приложений, работающих в среде Windows Server.
Команды Windows PowerShell, называемые cmdlets, позволяют управлять компьютерами из командной строки. Поставщики Windows PowerShell позволяют получить доступ к хранилищам данных, например к реестру и хранилищу сертификатов, так же легко, как и к файловой системе.
Кроме того, Windows PowerShell имеет богатый синтаксический анализатор выражений и полностью разработанный язык сценариев. Так что простыми словами вы можете выполнять все задачи, которые вы делаете с помощью графического интерфейса, и многое другое. Windows PowerShell Scripting - это полностью разработанный язык сценариев с богатым анализатором выражений /
Особенности
Cmdlets - Командлеты выполняют общие задачи системного администрирования, например, управление реестром, службами, процессами, журналами событий и использование инструментария управления Windows (WMI).
Task oriented - Язык сценариев PowerShell основан на задачах и обеспечивает поддержку существующих сценариев и инструментов командной строки.
Consistent design- Поскольку командлеты и системные хранилища данных используют общий синтаксис и имеют общие соглашения об именах, совместное использование данных упрощается. Выходные данные одного командлета можно передать по конвейеру другому командлету без каких-либо манипуляций.
Simple to Use - Упрощенная навигация на основе команд позволяет пользователям перемещаться по реестру и другим хранилищам данных аналогично навигации по файловой системе.
Object based- PowerShell обладает мощными возможностями манипулирования объектами. Объекты можно отправлять напрямую в другие инструменты или базы данных.
Extensible interface. - PowerShell настраивается, так как независимые поставщики программного обеспечения и корпоративные разработчики могут создавать собственные инструменты и утилиты, используя PowerShell для администрирования своего программного обеспечения.
Переменные
Переменные PowerShell - это именованные объекты. Поскольку PowerShell работает с объектами, эти переменные используются для работы с объектами.
Создание переменной
Имя переменной должно начинаться с символа $ и может содержать в своих именах буквенно-цифровые символы и подчеркивание. Переменную можно создать, введя действительное имя переменной.
Введите следующую команду в консоли PowerShell ISE. Предполагая, что вы находитесь в папке D: \ test.
$location = Get-Location
Здесь мы создали переменную $ location и присвоили ей выходные данные командлета Get-Location. Теперь он содержит текущее местоположение.
Использование переменной
Введите следующую команду в консоли PowerShell ISE.
$location
Вывод
Вы можете увидеть следующий вывод в консоли PowerShell.
Path
----
D:\test
Получение информации о переменной
Командлет Get-Member может указать тип используемой переменной. См. Пример ниже.
$location | Get-Member
Вывод
Вы можете увидеть следующий вывод в консоли PowerShell.
TypeName: System.Management.Automation.PathInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Drive Property System.Management.Automation.PSDriveInfo Drive {get;}
Path Property System.String Path {get;}
Provider Property System.Management.Automation.ProviderInfo Provider {get;}
ProviderPath Property System.String ProviderPath {get;}
PowerShell Специальные переменные хранят информацию о PowerShell. Их также называют автоматическими переменными. Ниже приведен список автоматических переменных -
Оператор | Описание |
---|---|
$$ | Представляет последний токен в последней строке, полученной сеансом. |
$? | Представляет состояние выполнения последней операции. Он содержит TRUE, если последняя операция завершилась успешно, и FALSE, если она не удалась. |
$ ^ | Представляет первый токен в последней строке, полученной сеансом. |
$ _ | То же, что и $ PSItem. Содержит текущий объект в объекте конвейера. Вы можете использовать эту переменную в командах, которые выполняют действие над каждым объектом или выбранными объектами в конвейере. |
$ ARGS | Представляет массив необъявленных параметров и / или значений параметров, которые передаются в функцию, сценарий или блок сценария. |
$ CONSOLEFILENAME | Представляет путь к файлу консоли (.psc1), который последний раз использовался в сеансе. |
$ ERROR | Представляет массив объектов ошибок, которые представляют самые последние ошибки. |
$ СОБЫТИЕ | Представляет объект PSEventArgs, представляющий событие, которое обрабатывается. |
$ СОБЫТИЯ | Представляет объект, представляющий первый аргумент события, производный от EventArgs обрабатываемого события. |
$ СОБЫТИЯ ПОДПИСЧИК | Представляет объект PSEventSubscriber, который представляет подписчика на событие, которое обрабатывается. |
$ EXECUTIONCONTEXT | Представляет объект EngineIntrinsics, представляющий контекст выполнения узла PowerShell. |
$ FALSE | Представляет ЛОЖЬ. Вы можете использовать эту переменную для представления FALSE в командах и скриптах вместо использования строки «false». |
$ FOREACH | Представляет перечислитель (а не результирующие значения) цикла ForEach. Вы можете использовать свойства и методы перечислителей для значения переменной $ ForEach. |
$ HOME | Представляет полный путь к домашнему каталогу пользователя. |
$ HOST | Представляет объект, представляющий текущее ведущее приложение для PowerShell. |
$ INPUT | Представляет перечислитель, который перечисляет все входные данные, переданные в функцию. |
$ LASTEXITCODE | Представляет код выхода последней запущенной программы для Windows. |
$ МАТЧИ | Переменная $ Matches работает с операторами -match и -notmatch. |
$ MYINVOCATION | $ MyInvocation заполняется только для сценариев, функций и блоков сценариев. Свойства PSScriptRoot и PSCommandPath автоматической переменной $ MyInvocation содержат информацию о вызывающем или вызывающем сценарии, а не о текущем сценарии. |
$ NESTEDPROMPTLEVEL | Представляет текущий уровень подсказки. |
$ NULL | $ null - это автоматическая переменная, содержащая NULL или пустое значение. Вы можете использовать эту переменную для представления отсутствующего или неопределенного значения в командах и скриптах. |
$ PID | Представляет идентификатор процесса (PID) процесса, в котором размещается текущий сеанс PowerShell. |
$ ПРОФИЛЬ | Представляет полный путь к профилю PowerShell для текущего пользователя и текущего ведущего приложения. |
$ PSCMDLET | Представляет объект, представляющий выполняемый командлет или расширенную функцию. |
$ PSCOMMANDPATH | Представляет полный путь и имя файла запускаемого сценария. |
$ PSCULTURE | Представляет имя языка и региональных параметров, используемых в настоящее время в операционной системе. |
$ PSDEBUGCONTEXT | Во время отладки эта переменная содержит информацию о среде отладки. В противном случае он содержит значение NULL. |
$ PSHOME | Представляет полный путь к установочному каталогу PowerShell. |
$ PSITEM | То же, что и $ _. Содержит текущий объект в объекте конвейера. |
$ PSSCRIPTROOT | Представляет каталог, из которого выполняется сценарий. |
$ PSSENDERINFO | Представляет информацию о пользователе, запустившем сеанс PSSession, включая удостоверение пользователя и часовой пояс исходного компьютера. |
КУЛЬТУРА | Представляет имя культуры пользовательского интерфейса (UI), которая в настоящее время используется в операционной системе. |
$ PSVERSIONTABLE | Представляет доступную только для чтения хеш-таблицу, в которой отображаются сведения о версии PowerShell, запущенной в текущем сеансе. |
$ SENDER | Представляет объект, создавший это событие. |
$ SHELLID | Представляет идентификатор текущей оболочки. |
$ STACKTRACE | Представляет трассировку стека для последней ошибки. |
$ ЭТО | В блоке сценария, который определяет свойство сценария или метод сценария, переменная $ This ссылается на объект, который расширяется. |
$ ИСТИНА | Представляет ИСТИНА. Вы можете использовать эту переменную для представления ИСТИНА в командах и скриптах. |
PowerShell предоставляет богатый набор операторов для управления переменными. Мы можем разделить все операторы PowerShell на следующие группы:
- Арифметические операторы
- Операторы присваивания
- Операторы сравнения
- Логические операторы
- Операторы перенаправления
- Операторы разлива и соединения
- Типовые операторы
- Унарные операторы
Арифметические операторы
Арифметические операторы используются в математических выражениях точно так же, как они используются в алгебре. В следующей таблице перечислены арифметические операторы -
Предположим, что целочисленная переменная A содержит 10, а переменная B содержит 20, тогда -
Показать примеры
Оператор | Описание | пример |
---|---|---|
+ (Дополнение) | Добавляет значения по обе стороны от оператора. | A + B даст 30 |
- (Вычитание) | Вычитает правый операнд из левого операнда. | A - B даст -10 |
* (Умножение) | Умножает значения по обе стороны от оператора. | A * B даст 200 |
/ (Деление) | Делит левый операнд на правый операнд. | Б / А даст 2 |
% (Модуль) | Делит левый операнд на правый и возвращает остаток. | B% A даст 0 |
Операторы сравнения
Ниже приведены операторы присваивания, поддерживаемые языком PowerShell.
Предположим, что целочисленная переменная A содержит 10, а переменная B содержит 20, тогда -
Показать примеры
Оператор | Описание | пример |
---|---|---|
экв (равно) | Сравнивает два значения, чтобы они были равны или нет. | A -eq B даст false |
ne (не равно) | Сравнивает два значения, которые не равны. | A -ne B даст истину |
gt (больше чем) | Сравнивает первое значение с большим, чем второе. | B -gt A даст истину |
ge (больше или равно) | Сравнивает первое значение как большее или равное второму. | B -ge A даст истину |
lt (меньше чем) | Сравнивает первое значение с меньшим, чем второе. | B -lt A даст ложь |
le (меньше или равно) | Сравнивает первое значение, которое меньше или равно второму. | B -le A даст false |
Операторы присваивания
Ниже приведены операторы присваивания, поддерживаемые языком PowerShell.
Показать примеры
Оператор | Описание | пример |
---|---|---|
знак равно | Простой оператор присваивания. Присваивает значения из правых операндов левому операнду. | C = A + B присвоит значение A + B в C |
+ = | Добавить оператор присваивания И. Он добавляет правый операнд к левому операнду и присваивает результат левому операнду. | C + = A эквивалентно C = C + A |
знак равно | Оператор вычитания И присваивания. Он вычитает правый операнд из левого операнда и присваивает результат левому операнду. | C - = A эквивалентно C = C - A |
Логические операторы
В следующей таблице перечислены логические операторы -
Предположим, что логические переменные A верны, а переменная B имеет значение false, тогда -
Показать примеры
Оператор | Описание | пример |
---|---|---|
И (логическое и) | Вызывается логическим оператором И. Если оба операнда не равны нулю, условие становится истинным. | (A -AND B) ложно |
ИЛИ (логическое или) | Вызывается логическим оператором ИЛИ. Если какой-либо из двух операндов отличен от нуля, условие становится истинным. | (A -OR B) верно |
НЕ (логическое "нет") | Вызывается оператором логического НЕ. Используется для изменения логического состояния операнда на обратное. Если условие истинно, то оператор логического НЕ сделает ложным. | -NOT (A -AND B) верно |
Разные операторы
Ниже приведены различные важные операторы, поддерживаемые языком PowerShell.
Показать примеры
Оператор | Описание | пример |
---|---|---|
> (Оператор перенаправления) | Оператор перенаправления. Назначает вывод для печати в перенаправленный файл / устройство вывода. | dir> test.log распечатает список каталогов в файле test.log |
Может возникнуть ситуация, когда вам нужно выполнить блок кода несколько раз. Как правило, операторы выполняются последовательно: сначала выполняется первый оператор функции, затем второй и т. Д.
Языки программирования предоставляют различные управляющие структуры, которые позволяют использовать более сложные пути выполнения.
А loop оператор позволяет нам выполнять оператор или группу операторов несколько раз, и ниже приводится общая форма оператора цикла в большинстве языков программирования:
Язык программирования PowerShell предоставляет следующие типы циклов для обработки требований цикла. Щелкните следующие ссылки, чтобы проверить их детали.
Sr.No. | Цикл и описание |
---|---|
1 | для цикла Выполнить последовательность операторов несколько раз и сократить код, управляющий переменной цикла. |
2 | цикл forEach Улучшено для цикла. В основном это используется для обхода коллекции элементов, включая массивы. |
3 | пока цикл Повторяет утверждение или группу утверждений, пока выполняется данное условие. Он проверяет условие перед выполнением тела цикла. |
4 | делать ... пока цикл Подобен оператору while, за исключением того, что он проверяет условие в конце тела цикла. |
Структуры принятия решений имеют одно или несколько условий, которые должны быть оценены или протестированы программой, а также оператор или операторы, которые должны быть выполнены, если условие определено как истинное, и, необязательно, другие операторы, которые должны быть выполнены, если условие определено. быть ложным.
Ниже приводится общая форма типичной структуры принятия решений, встречающейся в большинстве языков программирования.
Язык сценариев PowerShell предоставляет следующие типы операторов принятия решений. Щелкните следующие ссылки, чтобы проверить их детали.
Sr.No. | Заявление и описание |
---|---|
1 | если заявление An if statement состоит из логического выражения, за которым следует одно или несколько операторов. |
2 | если ... еще заявление An if statement может сопровождаться необязательным else statement, который выполняется, когда логическое выражение ложно. |
3 | вложенный оператор if Вы можете использовать один if или же elseif заявление внутри другого if или же elseif заявления). |
4 | оператор переключения А switch оператор позволяет проверить переменную на равенство со списком значений. |
PowerShell предоставляет структуру данных, array, в котором хранится последовательная коллекция фиксированного размера элементов любого типа. Массив используется для хранения набора данных, но часто бывает полезнее думать о массиве как о коллекции переменных или объектов.
Вместо объявления отдельных переменных, таких как число0, число1, ... и число99, вы объявляете одну переменную массива, такую как числа, и используете числа [0], числа [1] и ..., числа [99] для представления отдельные переменные.
В этом руководстве рассказывается, как объявлять переменные массива, создавать массивы и обрабатывать массивы с помощью индексированных переменных.
Объявление переменных массива
Чтобы использовать массив в программе, вы должны объявить переменную для ссылки на массив, и вы можете указать тип массива, на который может ссылаться переменная. Вот синтаксис для объявления переменной массива -
Синтаксис
$A = 1, 2, 3, 4
or
$A = 1..4
Note- По умолчанию тип объектов массива - System.Object. Метод GetType () возвращает тип массива. Типа можно передать.
пример
Следующие фрагменты кода являются примерами этого синтаксиса:
[int32[]]$intA = 1500,2230,3350,4000
$A = 1, 2, 3, 4
$A.getType()
Это даст следующий результат -
Вывод
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Доступ к элементам массива осуществляется через index. Индексы массива начинаются с 0; то есть они начинаются с 0 доarrayRefVar.length-1.
пример
Следующий оператор объявляет переменную массива myList, создает массив из 10 элементов типа double и присваивает его ссылку myList:
$myList = 5.6, 4.5, 3.3, 13.2, 4.0, 34.33, 34.0, 45.45, 99.993, 11123
На следующем рисунке представлен массив myList. Здесь myList содержит десять двойных значений, а индексы от 0 до 9.
Обработка массивов
При обработке элементов массива мы часто используем либо for петля или foreach цикл, потому что все элементы в массиве имеют один и тот же тип и размер массива известен.
пример
Вот полный пример, показывающий, как создавать, инициализировать и обрабатывать массивы:
$myList = 5.6, 4.5, 3.3, 13.2, 4.0, 34.33, 34.0, 45.45, 99.993, 11123
write-host("Print all the array elements")
$myList
write-host("Get the length of array")
$myList.Length
write-host("Get Second element of array")
$myList[1]
write-host("Get partial array")
$subList = $myList[1..3]
write-host("print subList")
$subList
write-host("using for loop")
for ($i = 0; $i -le ($myList.length - 1); $i += 1) {
$myList[$i]
}
write-host("using forEach Loop")
foreach ($element in $myList) {
$element
}
write-host("using while Loop")
$i = 0
while($i -lt 4) {
$myList[$i];
$i++
}
write-host("Assign values")
$myList[1] = 10
$myList
Это даст следующий результат -
Вывод
Print all the array elements
5.6
4.5
3.3
13.2
4
34.33
34
45.45
99.993
11123
Get the length of array
10
Get Second element of array
4.5
Get partial array
print subList
4.5
3.3
13.2
using for loop
5.6
4.5
3.3
13.2
4
34.33
34
45.45
99.993
11123
using forEach Loop
5.6
4.5
3.3
13.2
4
34.33
34
45.45
99.993
11123
using while Loop
5.6
4.5
3.3
13.2
Assign values
5.6
10
3.3
13.2
4
34.33
34
45.45
99.993
11123
Примеры методов массивов
Вот полный пример, показывающий операции с массивами с использованием его методов
$myList = @(0..4)
write-host("Print array")
$myList
$myList = @(0..4)
write-host("Assign values")
$myList[1] = 10
$myList
Это даст следующий результат -
Вывод
Clear array
Print array
0
1
2
3
4
Assign values
0
10
2
3
4
Hashtable хранит пары ключ / значение в хеш-таблице. При использовании Hashtable вы указываете объект, который используется в качестве ключа, и значение, которое вы хотите связать с этим ключом. Обычно мы использовали String или числа в качестве ключей.
В этом руководстве рассказывается, как объявлять переменные хеш-таблицы, создавать хеш-таблицы и обрабатывать хеш-таблицу с помощью их методов.
Объявление переменных хеш-таблицы
Чтобы использовать хеш-таблицу в программе, вы должны объявить переменную для ссылки на хеш-таблицу. Вот синтаксис для объявления переменной хеш-таблицы -
Синтаксис
$hash = @{ ID = 1; Shape = "Square"; Color = "Blue"}
or
$hash = @{}
Note- Упорядоченные словари могут быть созданы с использованием аналогичного синтаксиса. Упорядоченные словари поддерживают порядок, в котором добавляются записи, а хэш-таблицы - нет.
пример
Следующие фрагменты кода являются примерами этого синтаксиса:
$hash = [ordered]@{ ID = 1; Shape = "Square"; Color = "Blue"}
Распечатайте хеш-таблицу.
$hash
Вывод
Name Value
---- -----
ID 1
Color Blue
Shape Square
Доступ к значениям хэш-таблицы осуществляется через keys.
> $hash["ID"]
1
Обработка Hashtable
Для доступа к ключам или значениям хэш-таблиц можно использовать точечную нотацию.
> $hash.keys
ID
Color
Shape
> $hash.values
1
Blue
Square
пример
Вот полный пример, показывающий, как создавать, инициализировать и обрабатывать хеш-таблицу:
$hash = @{ ID = 1; Shape = "Square"; Color = "Blue"}
write-host("Print all hashtable keys")
$hash.keys
write-host("Print all hashtable values")
$hash.values
write-host("Get ID")
$hash["ID"]
write-host("Get Shape")
$hash.Number
write-host("print Size")
$hash.Count
write-host("Add key-value")
$hash["Updated"] = "Now"
write-host("Add key-value")
$hash.Add("Created","Now")
write-host("print Size")
$hash.Count
write-host("Remove key-value")
$hash.Remove("Updated")
write-host("print Size")
$hash.Count
write-host("sort by key")
$hash.GetEnumerator() | Sort-Object -Property key
Это даст следующий результат -
Вывод
Print all hashtable keys
ID
Color
Shape
Print all hashtable values
1
Blue
Square
Get ID
1
Get Shape
print Size
3
Add key-value
Add key-value
print Size
5
Remove key-value
print Size
4
sort by key
Name Value
---- -----
Color Blue
Created Now
ID 1
Shape
Square
Регулярное выражение - это особая последовательность символов, которая помогает сопоставить или найти другие строки или наборы строк с использованием специального синтаксиса, содержащегося в шаблоне. Их можно использовать для поиска, редактирования или управления текстом и данными.
Вот таблица, в которой перечислены все синтаксисы метасимволов регулярных выражений, доступные в PowerShell:
Подвыражение | Матчи |
---|---|
^ | Соответствует началу строки. |
$ | Соответствует концу строки. |
. | Соответствует любому одиночному символу, кроме новой строки. С помощьюm опция позволяет ему также соответствовать новой строке. |
[...] | Соответствует любому одиночному символу в скобках. |
[^ ...] | Соответствует любому одиночному символу, не указанному в скобках. |
\ A | Начало всей строки. |
\ z | Конец всей строки. |
\ Z | Конец всей строки, кроме допустимого символа конца строки. |
re * | Соответствует 0 или более вхождениям предыдущего выражения. |
re + | Соответствует одному или нескольким из предыдущих элементов. |
ре? | Соответствует 0 или 1 вхождению предыдущего выражения. |
re {n} | Соответствует ровно n повторениям предыдущего выражения. |
re {n,} | Соответствует n или нескольким вхождениям предыдущего выражения. |
re {n, m} | Соответствует минимум n и максимум m вхождениям предыдущего выражения. |
а | б | Соответствует либо a, либо b. |
(повторно) | Группирует регулярные выражения и запоминает совпадающий текст. |
(?: ре) | Группирует регулярные выражения без запоминания совпадающего текста. |
(?> ре) | Соответствует независимому шаблону без возврата. |
\ w | Соответствует символам слова. |
\ W | Соответствует несловесным символам. |
\ s | Соответствует пробелу. Эквивалентно [\ t \ n \ r \ f]. |
\ S | Соответствует пробелам. |
\ d | Соответствует цифрам. Эквивалентно [0-9]. |
\ D | Соответствует нецифровым. |
\ A | Соответствует началу строки. |
\ Z | Соответствует концу строки. Если новая строка существует, она соответствует непосредственно перед новой строкой. |
\ z | Соответствует концу строки. |
\Г | Соответствует точке, где закончился последний матч. |
\ п | Обратная ссылка на номер группы захвата "n". |
\ b | Соответствует границам слова, если оно находится вне скобок. Соответствует пробелу (0x08) в скобках. |
\ B | Соответствует несловесным границам. |
\ n, \ t и т. д. | Соответствует символам новой строки, возврата каретки, табуляции и т. Д. |
\ Q | Escape (кавычка) все символы до \ E. |
\ E | Завершает цитирование, начатое с \ Q. |
Вот полные примеры, показывающие, как использовать регулярное выражение в PowerShell;
Sr.No. | Соответствие и описание |
---|---|
1 | Соответствующие персонажи Пример поддерживаемых символов регулярного выражения. |
2 | Соответствие классов персонажей Пример поддерживаемых классов символов. |
3 | Квантификаторы соответствия Пример поддерживаемых кванторов. |
Оператор обратного апострофа (`) также называется оператором переноса слов. Это позволяет записывать команду в несколько строк. Его также можно использовать для новой строки (`n) или табуляции (` t) в предложениях. См. Примеры ниже -
Пример 1
Get-Service * | Sort-Object ServiceType `
| Format-Table Name, ServiceType, Status -AutoSize
Это станет
Get-Service * | Sort-Object ServiceType | Format-Table Name, ServiceType, Status -AutoSize
Проверьте вывод как
Name ServiceType Status
---- ----------- ------
MSSQLServerADHelper100 Win32OwnProcess Stopped
ntrtscan Win32OwnProcess Running
...
Пример 2
Использование новой строки и табуляции.
> Write-host "Title Subtitle"
Title Subtitle
> Write-host "Title `nSubtitle"
Title
Subtitle
> Write-host "Title `tSubtitle"
Title Subtitle
Powershell поддерживает три типа скобок.
Parenthesis brackets. − ()
Braces brackets. − {}
Square brackets. − []
Круглые скобки
Этот тип скобок используется для
передавать аргументы
приложить несколько наборов инструкций
разрешить двусмысленность
создать массив
пример
> $array = @("item1", "item2", "item3")
> foreach ($element in $array) { $element }
item1
item2
item3
Подтяжки скобки
Этот тип скобок используется для
приложить заявления
блокировать команды
пример
$x = 10
if($x -le 20){
write-host("This is if statement")
}
Это даст следующий результат -
Вывод
This is if statement.
Квадратных скобок
Этот тип скобок используется для
доступ к массиву
доступ к хэш-таблицам
фильтр с использованием регулярного выражения
пример
> $array = @("item1", "item2", "item3")
> for($i = 0; $i -lt $array.length; $i++){ $array[$i] }
item1
item2
item3
>Get-Process [r-s]*
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
320 72 27300 33764 227 3.95 4028 SCNotification
2298 77 57792 48712 308 2884 SearchIndexer
...
Псевдоним PowerShell - это другое имя командлета или любого элемента команды.
Создание псевдонима
Использовать New-Aliasкомандлет для создания псевдонима. В приведенном ниже примере мы создали справку по псевдониму для командлета Get-Help.
New-Alias -Name help -Value Get-Help
Теперь вызовите псевдоним.
help Get-WmiObject -Detailed
Вы увидите следующий результат.
NAME
Get-WmiObject
SYNOPSIS
Gets instances of Windows Management Instrumentation (WMI) classes or information about the available classes.
SYNTAX
Get-WmiObject [
...
Получение псевдонима
Использовать get-alias командлет, чтобы получить все псевдонимы, присутствующие в текущем сеансе PowerShell.
Get-Alias
Вы увидите следующий результат.
CommandType Name Definition
----------- ---- ----------
Alias % ForEach-Object
Alias ? Where-Object
Alias ac Add-Content
Alias asnp Add-PSSnapIn
...
Распечатать