about_Automatic_Variables
Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0
Вставьте сюда введение.
РАЗДЕЛ
about_Automatic_Variables
КРАТКОЕ ОПИСАНИЕ
В этом разделе описываются переменные, хранящие сведения о состоянии для Windows PowerShell. Эти переменные создаются и обслуживаются Windows PowerShell.
ПОДРОБНОЕ ОПИСАНИЕ
Ниже приведен список переменных в Windows PowerShell:
$$
Содержит последний маркер в последней строке, полученной сеансом.
$?
Содержит состояние выполнения последней операции. Она содержит значение TRUE, если последняя операция выполнена успешно, и значение FALSE при ошибке.
$^
Содержит первый маркер в последней строке, полученной сеансом.
$_
Аналогично $PSItem. Содержит текущий объект в объекте конвейера. Эту переменную можно использовать в командах, которые выполняют действие для каждого объекта или выбранных объектов в конвейере.
$ARGS
Содержит массив необъявленных параметров и значения параметров, которые передаются в функцию, скрипт или блок скрипта. При создании функции параметры можно объявить с помощью ключевого слова param или добавив разделенный запятыми список параметров в круглых скобках после имени функции.
В действии события переменная $Args содержит объекты, представляющие аргументы обрабатываемого события. Эта переменная будет заполнена только внутри блока Action команды регистрации событий. Значение этой переменной также можно найти в свойстве SourceArgs объекта PSEventArgs (System.Management.Automation.PSEventArgs), возвращаемого командлетом Get-Event.
$CONSOLEFILENAME
Содержит путь к файлу консоли (PSC1), который использовался последним в сеансе. Эта переменная заполняется при запуске Windows PowerShell с параметром PSConsoleFile или при использовании командлета Export-Console для экспорта имен оснастки в файл консоли.
При использовании командлета Export-Console без параметров он автоматически обновляет файл консоли, который последним применялся в сеансе. Эту автоматическую переменную можно использовать, чтобы определить, какой файл будет обновлен.
$ERROR
Содержит массив объектов ошибок, которые представляют последние ошибки. Последняя ошибка — это первый объект ошибки в массиве ($Error[0]).
Чтобы предотвратить добавление ошибки в массив $Error, используйте общий параметр ErrorAction со значением Ignore. Дополнительные сведения см. в разделе about_CommonParameters (https://go.microsoft.com/fwlink/?LinkId=113216).
$EVENT
Содержит объект PSEventArgs, представляющий обрабатываемое событие. Эта переменная будет заполнена только внутри блока Action команды регистрации событий, например Register-ObjectEvent. Значение этой переменной — это тот же объект, который возвращает командлет Get-Event. Поэтому можно использовать свойства переменной $Event, например $Event.TimeGenerated, в блоке Action скрипта.
$EVENTARGS
Содержит объект, представляющий первый аргумент обрабатываемого события, производный от EventArgs. Эта переменная будет заполнена только внутри блока Action команды регистрации событий. Значение этой переменной также можно найти в свойстве SourceEventArgs объекта PSEventArgs (System.Management.Automation.PSEventArgs), возвращаемого командлетом Get-Event.
$EVENTSUBSCRIBER
Содержит объект PSEventSubscriber, представляющий подписчика обрабатываемого события. Эта переменная будет заполнена только внутри блока Action команды регистрации событий. Значение этой переменной — это тот же объект, который возвращает командлет Get-EventSubscriber.
$EXECUTIONCONTEXT
Содержит объект EngineIntrinsics, представляющий контекст выполнения узла Windows PowerShell. Эту переменную можно использовать для поиска объектов выполнения, доступных для командлетов.
$FALSE
Содержит значение FALSE. Эту переменную можно использовать для представления значения FALSE в командах и скриптах вместо того, чтобы использовать строку "false". Эта строка может интерпретироваться как значение TRUE, если она преобразуется в непустую строку или ненулевое целочисленное значение.
$FOREACH
Содержит перечислитель (а не результирующие значения) цикла ForEach. Вы можете использовать свойства и методы перечислителей в значении переменной $ForEach. Эта переменная существует только во время выполнения цикла ForEach и удаляется после завершения цикла. Подробнее: about_ForEach.
$HOME
Содержит полный путь к домашнему каталогу пользователя. Эта переменная — эквивалент переменной среды %homedrive%%homepath%, обычно C:\Users\<имя_пользователя>.
$HOST
Содержит объект, представляющий текущее ведущее приложение для Windows PowerShell. Эту переменную можно использовать для представления текущего ведущего приложения в командах или для отображения и изменения его свойств, например $Host.version, $Host.CurrentCulture или $host.ui.rawui.setbackgroundcolor("Red").
$INPUT
Содержит перечислитель всех входных данных, передаваемых функции. Переменная $input доступна только функциям и блокам скриптов (которые представляют собой неименованные функции). В блоке Process функции переменная $input перечисляет объект, который в данный момент находится в конвейере. По завершении блока Process объектов в конвейере больше нет, поэтому переменная $input перечисляет пустую коллекцию. Если функция не содержит блок Process, то в блоке End переменная $input перечисляет коллекцию всех входных данных функции.
$LASTEXITCODE
Содержит код выхода из последней программы под управлением Windows, которая была запущена.
$MATCHES
Переменная $Matches работает с операторами -match и -notmatch. Если отправить скалярные входные данные оператору -match или -notmatch и любой из них обнаруживает совпадение, они возвращают логическое значение и заполняют автоматическую переменную $Matches хэш-таблицей строковых значений, которые были сопоставлены. Дополнительные сведения об операторе -match см. в разделе about_comparison_operators.
$MYINVOCATION
Содержит сведения о текущей команде, такие как имя, параметры, значения параметров и сведения о том, как команда была запущена или вызвана, например имя скрипта, который вызвал текущую команду.
Переменная $MyInvocation заполняется только для скриптов, функций и блоков скриптов. Вы можете использовать данные в объекте System.Management.Automation.InvocationInfo, который переменная $MyInvocation возвращает в текущем скрипте, например путь и имя файла скрипта ($MyInvocation.MyCommand.Path) или имя функции ($MyInvocation.MyCommand.Name), для идентификации текущей команды. Это особенно полезно для поиска имени текущего скрипта.
Начиная с версии Windows PowerShell 3.0 переменная $MyInvocation получила следующие новые свойства.
-- PSScriptRoot: Contains the full path to the script that invoked the
current command. The value of this property is populated only when
the caller is a script.
-- PSCommandPath: Contains the full path and file name of the script that
invoked the current command. The value of this property is populated
only when the caller is a script.
В отличие от автоматических переменных $PSScriptRoot и $PSCommandPath свойства PSScriptRoot и PSCommandPath автоматической переменной $MyInvocation содержат сведения о вызывающем объекте или скрипте, а не текущем скрипте.
$NESTEDPROMPTLEVEL
Содержит уровень текущего запроса. Значение 0 указывает исходный уровень запроса. Значение увеличивается на единицу при вводе вложенного уровня и уменьшается на единицу при выходе из него.
Например, Windows PowerShell представляет вложенную командную строку при использовании метода $Host.EnterNestedPrompt. Windows PowerShell также представляет вложенную командную строку при достижении точки останова в отладчике Windows PowerShell.
При входе во вложенный запрос Windows PowerShell приостанавливает текущую команду, сохраняет контекст выполнения и увеличивает значение переменной $NestedPromptLevel на единицу. Для создания дополнительных вложенных запросов командной строки (до 128 уровней) или возврата к исходной командной строке выполните команду или введите "exit".
Переменная $NestedPromptLevel помогает отслеживать уровень запроса. Можно создать альтернативную командную строку Windows PowerShell, которая включает это значение, чтобы оно всегда было видимым.
$NULL
$null — это автоматическая переменная, которая содержит значение NULL или пустое значение. Эту переменную можно использовать для представления отсутствующего или неопределенного значения в командах и скриптах.
Windows PowerShell считает $null объектом со значением, то есть явным заполнителем, поэтому $null можно использовать для представления пустого значения в последовательности значений.
Например, если значение $null включено в коллекцию, оно считается одним из объектов.
C:\PS> $a = ".dir", $null, ".pdf"
C:\PS> $a.count
3
Если передать переменную $null в командлет ForEach-Object, он создает значение для $null, как и для других объектов.
PS C:\ps-test> ".dir", "$null, ".pdf" | Foreach {"Hello"}
Hello
Hello
Hello
В результате $null нельзя использовать для обозначения "параметра без значения". Значение параметра $null переопределяет значение параметра по умолчанию.
Но поскольку Windows PowerShell рассматривает переменную $null в качестве заполнителя, можно использовать скрипты, аналогичные приведенному ниже, которые не будут работать, если пропустить $null.
$calendar = @($null, $null, “Meeting”, $null, $null, “Team Lunch”, $null)
$days = Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"
$currentDay = 0
foreach($day in $calendar)
{
if($day –ne $null)
{
"Appointment on $($days[$currentDay]): $day"
}
$currentDay++
}
Appointment on Tuesday: Meeting
Appointment on Friday: Team lunch
$OFS
$OFS — это особая переменная, содержащая строку, которую требуется использовать в качестве разделителя полей выходных данных. Используйте эту переменную при преобразовании массива в строку. По умолчанию значение $OFS равно " ", но его можно изменить в текущем сеансе, введя $OFS="<значение>". Если вы ожидаете значение по умолчанию " " в выходных данных скрипта, модуля или конфигурации, будьте внимательны и не меняйте значение $OFS по умолчанию в других местах в коде.
Примеры:
PS> $a="1","2","3","4"
PS> $a
1
2
3
4
PS> [string]$a
1 2 3 4
PS> $OFS="";[string]$a
1234
PS> $OFS=",";[string]$a
1,2,3,4
PS> $OFS="--PowerShellRocks--";[string]$a
1--PowerShellRocks--2--PowerShellRocks--3--PowerShellRocks--4
PS> $OFS="`n`n";[string]$a
1
2
3
4
$PID
Содержит идентификатор процесса (PID), в котором размещается текущий сеанс Windows PowerShell.
$PROFILE
Содержит полный путь к профилю Windows PowerShell для текущего пользователя и текущего ведущего приложения. Эту переменную можно использовать для представления профиля в командах. Например, ее можно использовать в команде, чтобы определить, был ли создан профиль:
test-path $profile
Кроме того, ее можно использовать в команде для создания профиля:
new-item -type file -path $pshome -force
Эту переменную также можно использовать в команде, чтобы открыть профиль в Блокноте:
notepad $profile
$PSBOUNDPARAMETERS
Содержит словарь параметров, которые передаются в скрипт или функцию, и их текущие значения. Эта переменная имеет значение только в области, где объявлены параметры, например в скрипте или функции. Ее можно использовать для отображения или изменения текущих значений параметров или для передачи значений параметров в другой скрипт или функцию.
Например:
function Test {
param($a, $b)
# Display the parameters in dictionary format.
$PSBoundParameters
# Call the Test1 function with $a and $b.
test1 @PSBoundParameters
}
$PSCMDLET
Содержит объект, представляющий выполняемый командлет или дополнительную функцию.
Свойства и методы объекта можно использовать в командлете или коде функции, чтобы реагировать на условия использования. Например, свойство ParameterSetName содержит имя используемого набора параметров, а метод ShouldProcess динамически добавляет параметры WhatIf и Confirm командлета.
Дополнительные сведения об автоматической переменной $PSCmdlet см. в разделе about_Functions_Advanced.
$PSCOMMANDPATH
Содержит полный путь и имя файла выполняющегося скрипта. Эта переменная действительна во всех скриптах.
$PSCULTURE
Содержит имя языка и региональных параметров, которые используются в настоящее время в операционной системе. Язык и региональные параметры определяют формат отображения таких элементов, как числа, валюты и даты. Это значение свойства System.Globalization.CultureInfo.CurrentCulture.Name системы. Чтобы получить объект System.Globalization.CultureInfo для системы, используйте командлет Get-Culture.
$PSDEBUGCONTEXT
Во время отладки эта переменная содержит сведения о среде отладки. В противном случае она содержит значение NULL. В результате ее можно использовать для указания того, получил ли отладчик контроль. После заполнения переменная содержит объект PsDebugContext со свойствами Breakpoints и InvocationInfo. У свойства InvocationInfo есть несколько полезных свойств, в том числе Location. Свойство Location указывает путь к скрипту, отладка которого выполняется.
$PSHOME
Содержит полный путь к каталогу установки для Windows PowerShell, как правило, %windir%\System32\WindowsPowerShell\v1.0. Эту переменную можно использовать в путях к файлам Windows PowerShell. Например, следующая команда выполняет поиск слова "variable" в концептуальных разделах справки:
Select-String -Pattern Variable -Path $pshome\*.txt
$PSITEM
Аналогично $_. Содержит текущий объект в объекте конвейера. Эту переменную можно использовать в командах, которые выполняют действие для каждого объекта или выбранных объектов в конвейере.
$PSSCRIPTROOT
Содержит каталог, из которого запускается сценарий.
В версии Windows PowerShell 2.0 эта переменная допустима только в модулях сценариев (PSM1). Начиная с версии Windows PowerShell 3.0 она допустима во всех сценариях.
$PSSENDERINFO
Содержит сведения о пользователе, запустившем PSSession, в том числе идентификатор пользователя и часовой пояс компьютера. Эта переменная доступна только в PSSessions.
Переменная $PSSenderInfo содержит пользовательское свойство ApplicationArguments, которое по умолчанию содержит только $PSVersionTable из исходного сеанса. Для добавления данных к свойству ApplicationArguments используйте параметр ApplicationArguments командлета New-PSSessionOption.
$PSUICULTURE
Содержит имя регионального стандарта пользовательского интерфейса, который в настоящее время применяется в операционной системе. Язык и региональные параметры пользовательского интерфейса определяют, какие строки текста используются для элементов пользовательского интерфейса, например меню и сообщений. Это значение свойства System.Globalization.CultureInfo.CurrentUICulture.Name системы. Чтобы получить объект System.Globalization.CultureInfo для системы, используйте командлет Get-UICulture.
$PSVERSIONTABLE
Содержит доступную только для чтения хэш-таблицу, в которой отображаются сведения о версии Windows PowerShell, используемой в текущем сеансе. В таблице содержатся следующие элементы:
CLRVersion: The version of the common language runtime (CLR)
BuildVersion: The build number of the current version
PSVersion: The Windows PowerShell version number
WSManStackVersion: The version number of the WS-Management stack
PSCompatibleVersions: Versions of Windows PowerShell that are
compatible with the current version
SerializationVersion The version of the serialization method
PSRemotingProtocolVersion
The version of the Windows PowerShell remote
management protocol
$PWD
Содержит путь к объекту, представляющему полный путь к текущему каталогу.
$REPORTERRORSHOWEXCEPTIONCLASS
$REPORTERRORSHOWINNEREXCEPTION
$REPORTERRORSHOWSOURCE
$REPORTERRORSHOWSTACKTRACE
Переменные "ReportErrorShow" определены в Windows PowerShell, но они не реализованы. Командлет Get-Variable возвращает их, но они не содержат допустимые данные.
$SENDER
Содержит объект, вызвавший данное событие. Эта переменная будет заполнена только внутри блока Action команды регистрации событий. Значение этой переменной также можно найти в свойстве Sender объекта PSEventArgs (System.Management.Automation.PSEventArgs), возвращаемого командлетом Get-Event.
$SHELLID
Содержит идентификатор текущей оболочки.
$STACKTRACE
Содержит трассировку стека для самой последней ошибки.
$THIS
В блоке скрипта, определяющем свойство или метод скрипта, переменная $This ссылается на объект, который расширяется.
$TRUE
Содержит значение TRUE. Эту переменную можно использовать для представления значения TRUE в командах и скриптах.
СМ. ТАКЖЕ
about_Hash_Tables
about_Preference_Variables
about_Variables