Что такое автоматические переменные в PowerShell

Cto Takoe Avtomaticeskie Peremennye V Powershell



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 могут создавать оптимизированные методы системного администрирования.