PowerShell» Автоматические переменные необходимы для управления системой, автоматизации и сценариев. Эти переменные встроены в среду выполнения PowerShell и служат заполнителями для хранения и ссылки на определенную информацию во время выполнения скрипта или команды. Понимание и эффективное использование этих автоматических переменных может значительно повысить эффективность и функциональность сценариев PowerShell.
Цель этой статьи — изучить концепцию «автоматических переменных» в PowerShell, их значение и то, как их можно использовать в различных сценариях.
Что такое автоматические переменные в PowerShell?
Для начала давайте углубимся в определение « Автоматические переменные ». Эти переменные предопределены и автоматически создаются PowerShell во время выполнения скрипта. Они служат разным целям, включая предоставление информации о системе, аргументах командной строки, деталях, связанных со сценариями, и многом другом.
PowerShell предлагает несколько «автоматических переменных», каждая из которых служит определенной цели при выполнении скрипта. Эти переменные следующие:
1. Таблица $PSVersion
Одной из основных автоматических переменных в PowerShell является « $PSVersionTable ». Эта переменная позволяет разработчикам сценариев определить используемую версию PowerShell, что может иметь решающее значение при рассмотрении совместимости и доступности определенных функций и возможностей.
С этой переменной связаны следующие свойства:
PSВерсия: Возвращает номер версии PowerShell.
PSEEdition: Для PowerShell 4 и более ранних версий, а также PowerShell 5.1 в полнофункциональных версиях Windows это свойство имеет значение «Рабочий стол». Эта характеристика имеет значение Core для PowerShell 6 и более поздних версий, а также Windows PowerShell 5.1 для экономичных выпусков, таких как Windows Nano Server или Windows IoT.
GitCommitId: Получает идентификатор фиксации GitHub исходных файлов.
ТЫ: Регистрирует информацию о компьютерной системе, которую использует PowerShell.
Платформа: Возвращает платформу поддержки операционной системы. Unix имеет ценность для Linux и macOS. Проверьте $IsMacOs и $IsLinux.
PSСовместимые версии: Версии PowerShell, совместимые с текущей версией, возвращаются.
PSRemotingProtocolVersion: Возвращает номер версии протокола удаленного управления PowerShell.
СериализацияВерсия: Возвращает версию метода сериализации.
WSManStackVersion: Возвращает номер версии стека WS-Management.
$ PSVersionTable
2. $аргументы
Еще одна важная автоматическая переменная в PowerShell — « $Аргс ”, который содержит массив аргументов командной строки, передаваемых сценарию или функции. Эта переменная позволяет разработчикам динамически обрабатывать предоставленные аргументы и манипулировать ими в своих скриптах.
При определении функции вы можете либо использовать ключевое слово «param» для объявления параметров, либо добавить список параметров, разделенных запятыми, в круглых скобках после имени функции. В переменной «$Args» действия события хранятся объекты, которые служат заполнителями для параметров обрабатываемого события:
для каждого ( $аргумент в $Аргс ) {Write-Host $аргумент
}
3. $МойВызов
“ $MyInvocation » дает важные фоновые данные о сценарии или процедуре, которая выполняется в данный момент. Он предлагает такие свойства, как имя сценария, номер строки сценария и то, выполняется ли сценарий в интерактивном или неинтерактивном режиме. Эти свойства помогают разработчикам скриптов реализовывать логику ветвления, определять механизмы обработки ошибок или создавать значимые журналы и отчеты:
$ MyInvocation
4. $Ошибка
Менее известная автоматическая переменная $Ошибка », эффективно фиксирует любые сообщения об ошибках или исключениях, которые возникают во время выполнения скрипта. Доступ к «$Error» можно получить для получения конкретных сведений об ошибках, таких как сообщения об исключениях, трассировки стека или коды ошибок, что позволяет проводить подробный анализ и отладку.
Самая последняя ошибка представлена первым объектом ошибки в массиве « $Ошибка[0] “. Вы можете использовать общую опцию ErrorAction со значением «Игнорировать», чтобы ошибки не добавлялись в массив «$Error».
Предположим, мы набрали точную команду:
IP [ нафиг
Теперь, если мы введем командлет «$Error»:
$ Ошибка
5. $PSCmdlet
При работе с модулями PowerShell автоматическая переменная « $PSCmdlet вступает в силу. Эта переменная обеспечивает доступ к текущему экземпляру вызываемого командлета или функции, облегчая прямое взаимодействие с его свойствами и методами.
Используя «$PSCmdlet», опытные разработчики сценариев могут точно настраивать и улучшать поведение модулей, расширяя или изменяя встроенные функции. Вы можете использовать атрибуты и методы объекта в своем командлете или коде функции в соответствии с критериями использования:
функция командлет typeof-ps {[ cmdletBinding ( ) ] параметр ( )
эхо 'тип ` $psCmdlet является $($psCmdlet.GetType() .Полное имя)'
}
командлет typeof-ps
В дополнение к вышеупомянутым переменным PowerShell включает в себя автоматические переменные, такие как $HOME, $PROFILE, $PWD и многие другие, которые служат различным целям, таким как доступ к вводу, отслеживание ошибок, получение информации о среде, управление параметрами и многое другое. Эти переменные перечислены ниже:
Автоматические переменные | Описание |
$$ | Содержит последний токен в предыдущей строке, полученный сеансом PowerShell. |
$? | Сохраняет статус выполнения последней команды. |
$^ | Содержит первый токен последней строки, полученной сеансом. |
$_ | Представляет текущий объект в конвейере. |
$ConsoleFileName | Содержит путь к файлу консоли (.psc1), который последний раз использовался в сеансе. |
$EnabledExperimentalFeatures | Содержит список включенных экспериментальных функций. |
$Событие | Содержит объект «PSEventArgs», представляющий обрабатываемое событие. |
$EventArgs | Содержит первый аргумент обрабатываемого события. |
$EventSubscriber | Представляет подписчика события обрабатываемого события. |
$ExecutionContext | Представляет контекст выполнения узла PowerShell. |
$ложь | Представляет логическое значение «Ложь». |
$ foreach | Содержит перечислитель цикла for-Each. |
$ГЛАВНАЯ | Содержит полный путь к домашнему каталогу пользователя. |
$Хост | Представляет текущее ведущее приложение для PowerShell. |
$ ввод | Служит перечислителем для всех входных данных, передаваемых функции или сценарию. |
$IsCoreCLR | Указывает, выполняется ли сеанс в среде выполнения .NET Core (CoreCLR). |
$IsLinux | Указывает, выполняется ли сеанс в операционной системе Linux. |
$IsMacOS | Указывает, выполняется ли сеанс в операционной системе MacOS. |
$IsWindows | Определяет, выполняется ли сеанс в операционной системе Windows. |
$LASTEXITCODE | Сохраняет код выхода последней собственной программы или сценария PowerShell. |
$ Совпадения | Содержит совпадающие строки из операторов «-match» и «-notmatch». |
$NestedPromptLevel | Отслеживает текущий уровень приглашения во вложенных командах или сценариях отладки. |
$нуль | Представляет нулевое или пустое значение. |
$PID | Содержит идентификатор процесса (PID) сеанса PowerShell. |
$ПРОФИЛЬ | Содержит полный путь к профилю PowerShell для текущего пользователя и основного приложения. |
$PSBoundParameters | Содержит словарь параметров, переданных сценарию или функции, и их значений. |
$PSCommandPath | Содержит полный путь и имя файла исполняемого скрипта. |
$PSCulture | Отражает культуру текущего пространства выполнения PowerShell. |
$PSEdition | Содержит информацию о выпуске PowerShell. |
$PSHOME | Содержит полный путь к каталогу установки PowerShell. |
$PSItem | То же, что и $_, представляет текущий объект в конвейере. |
$PSScriptRoot | Содержит полный путь к родительскому каталогу исполняемого скрипта. |
$PSSenderInfo | Содержит информацию о пользователе, запустившем PSSession. |
$PSUICulture | Отражает культуру пользовательского интерфейса (UI), настроенную в операционной системе. |
$PWD | Представляет текущий рабочий каталог сеанса PowerShell. |
$Отправитель | Содержит объект, создавший событие. |
$ShellId | Содержит идентификатор текущей оболочки. |
$ стектрейс | Сохраняет трассировку стека для самой последней ошибки. |
$ переключатель | Содержит перечислитель оператора Switch. |
$ это | Относится к экземпляру класса в блоках сценария, которые расширяют классы. |
$правда | Представляет логическое значение «Истина». |
Все «автоматические переменные» в PowerShell можно найти, выполнив следующую команду:
Get-переменная
Заключение
“ Автоматические переменные ” формируют основу сценариев PowerShell, позволяя разработчикам получать информацию о системе, аргументах командной строки, контексте выполнения сценария и многом другом. Используя автоматические переменные, такие как «$PSVersionTable», «$Args», «$MyInvocation», «$Error» и другие, разработчики сценариев PowerShell могут создавать оптимизированные методы системного администрирования.