Поделиться через


Сведения об автоматических переменных

Краткое описание

Описывает переменные, которые хранят сведения о состоянии для PowerShell. Эти переменные создаются и поддерживаются с помощью PowerShell.

Подробное описание

По сути, эти переменные считаются доступны только для чтения. Несмотря на то, что они могут быть записаны в , для обратной совместимости они не должны быть записаны в .

Ниже приведен список автоматических переменных в PowerShell:

$$

Содержит последний маркер в последней строке, полученной сеансом.

$?

Содержит состояние выполнения последней команды. Он содержит значение True , если последняя команда выполнена успешно, и False, если она завершилась сбоем.

Для командлетов и расширенных функций, которые выполняются на нескольких этапах конвейера, например в process блоках и end , вызов this.WriteError() или $PSCmdlet.WriteError() соответственно в любой точке будет иметь значение $?False, как this.ThrowTerminatingError() и $PSCmdlet.ThrowTerminatingError().

Командлет Write-Error всегда устанавливает $? значение False сразу после выполнения, но не устанавливает $? значение False для вызываемой функции:

function Test-WriteError
{
    Write-Error "Bad"
    $? # $false
}

Test-WriteError
$? # $true

Для последней цели $PSCmdlet.WriteError() следует использовать вместо .

Для собственных команд (исполняемых файлов) $? имеет значение True , если $LASTEXITCODE равно 0, и значение False , если $LASTEXITCODE имеет любое другое значение.

Примечание

До версии PowerShell 7, содержащей оператор в круглых скобках(...), синтаксис $(...) подэкспрессии или выражение @(...) массива всегда сбрасываются в значение$? True, поэтому (Write-Error) отображается $? значение True. В PowerShell 7 этот параметр был изменен, поэтому $? в этих выражениях всегда будет отражаться фактический успех последнего выполнения команды.

$^

Содержит первый маркер в последней строке, полученной сеансом.

$_

Эквивалентно $PSItem. Содержит текущий объект в объекте конвейера. Эту переменную можно использовать в командах, выполняющих действие с каждым объектом или с выбранными объектами в конвейере.

$args

Содержит массив значений для необъявленных параметров, передаваемых в функцию, скрипт или блок скрипта. При создании функции можно объявить параметры с помощью param ключевое слово или добавив разделенный запятыми список параметров в круглых скобках после имени функции.

В действии $Args события переменная содержит объекты, представляющие аргументы события обрабатываемого события. Эта переменная заполняется только в блоке Action команды регистрации событий. Значение этой переменной также можно найти в свойстве SourceArgs возвращаемого объекта Get-EventPSEventArgs.

$ConsoleFileName

Содержит путь к файлу консоли (.psc1), который последний раз использовался в сеансе. Эта переменная заполняется при запуске PowerShell с помощью параметра PSConsoleFile или при использовании командлета Export-Console для экспорта имен оснасток в файл консоли.

При использовании командлета Export-Console без параметров он автоматически обновляет файл консоли, который последний раз использовался в сеансе. Эту автоматическую переменную можно использовать для определения того, какой файл будет обновлен.

$Error

Содержит массив объектов ошибок, представляющих самые последние ошибки. Самая последняя ошибка — это первый объект ошибки в массиве $Error[0].

Чтобы предотвратить добавление ошибки в $Error массив, используйте общий параметр ErrorAction со значением Ignore. См. сведения в разделе about_CommonParameters.

$Event

Содержит объект PSEventArgs , представляющий обрабатываемое событие. Эта переменная заполняется только в блоке Action команды регистрации событий, например Register-ObjectEvent. Значением этой переменной является тот же объект, который Get-Event возвращает командлет . Таким образом, можно использовать свойства переменной Event , например $Event.TimeGenerated, в блоке скрипта Action .

$EventArgs

Содержит объект , представляющий первый аргумент события, производный от EventArgs обрабатываемого события. Эта переменная заполняется только в блоке Action команды регистрации событий. Значение этой переменной также можно найти в свойстве SourceEventArgs возвращаемого объекта Get-EventPSEventArgs.

$EventSubscriber

Содержит объект PSEventSubscriber , представляющий подписчик события, который обрабатывается. Эта переменная заполняется только в блоке Action команды регистрации событий. Значением этой переменной является тот же объект, который Get-EventSubscriber возвращает командлет .

$ExecutionContext

Содержит объект EngineIntrinsics , представляющий контекст выполнения узла PowerShell. Эту переменную можно использовать для поиска объектов выполнения, доступных командлетам.

$false

Содержит значение False. Эту переменную можно использовать для представления false в командах и скриптах вместо строки false. Строка может быть интерпретирована как True , если она преобразована в непустую строку или в ненулевое целое число.

$foreach

Содержит перечислитель (не результирующие значения) цикла ForEach . Переменная $ForEach существует только во ForEach время выполнения цикла; она удаляется после завершения цикла.

Перечислители содержат свойства и методы, которые можно использовать для получения значений цикла и изменения текущей итерации цикла. Дополнительные сведения см. в разделе Использование перечислителей.

$HOME

Содержит полный путь к домашнему каталогу пользователя. Эта переменная эквивалентна "$env:homedrive$env:homepath" переменным среды Windows, обычно C:\Users\<UserName>.

$Host

Содержит объект , представляющий текущее ведущее приложение для PowerShell. Эту переменную можно использовать для представления текущего узла в командах, а также $Host.version для отображения или изменения свойств узла, например , $Host.CurrentCultureили $host.ui.rawui.setbackgroundcolor("Red").

$input

Содержит перечислитель, который перечисляет все входные данные, передаваемые в функцию. Переменная $input доступна только для функций и блоков скриптов (которые являются неименованными функциями).

  • В функции без Beginблока $input , Processили End переменная перечисляет коллекцию всех входных данных функции.

  • В блоке Begin$input переменная не содержит данных.

  • В блоке Process$input переменная содержит объект, который в данный момент находится в конвейере.

  • В блоке End$input переменная перечисляет коллекцию всех входных данных функции.

    Примечание

    Переменную нельзя использовать $input как в блоке Process, так и в блоке End в одной функции или блоке скрипта.

Так как $input является перечислителем, доступ к любому из его свойств приводит $input к недоступности. Для повторного использования свойств можно сохранить $input в другой переменной $input .

Перечислители содержат свойства и методы, которые можно использовать для получения значений цикла и изменения текущей итерации цикла. Дополнительные сведения см. в разделе Использование перечислителей.

$IsCoreCLR

Содержит значение , $True если текущий сеанс выполняется в среде выполнения .NET Core (CoreCLR). В противном случае содержит $False.

$IsLinux

Содержит значение , $True если текущий сеанс выполняется в операционной системе Linux. В противном случае содержит $False.

$IsMacOS

Содержит значение , $True если текущий сеанс выполняется в операционной системе MacOS. В противном случае содержит $False.

$IsWindows

Содержит значение , $TRUE если текущий сеанс выполняется в операционной системе Windows. В противном случае содержит $FALSE.

$LastExitCode

Содержит код выхода последней запущенной программы на основе Windows.

$Matches

Переменная Matches работает с операторами -match и -notmatch . При отправке скалярных входных данных оператору -match или -notmatch и обнаружении совпадения они возвращают логическое значение и заполняют $Matches автоматическую переменную хэш-таблицей всех совпадающих строковых значений. Хэш-таблица $Matches также может быть заполнена записью при использовании регулярных выражений с оператором -match .

Дополнительные сведения об операторе см. в -matchразделе about_Comparison_Operators. Дополнительные сведения о регулярных выражениях см. в разделе about_Regular_Expressions.

$MyInvocation

Содержит сведения о текущей команде, такие как имя, параметры, значения параметров и сведения о запуске, вызове или вызове команды, например имя скрипта, который вызвал текущую команду.

$MyInvocation заполняется только для скриптов, функций и блоков скриптов. Для идентификации текущей команды можно использовать сведения в объекте System.Management.Automation.InvocationInfo , который $MyInvocation возвращается в текущем скрипте, например путь и имя файла скрипта ($MyInvocation.MyCommand.Path) или имя функции ($MyInvocation.MyCommand.Name). Это особенно полезно для поиска имени текущего скрипта.

Начиная с PowerShell 3.0, MyInvocation имеет следующие новые свойства.

Свойство Описание
PSScriptRoot Содержит полный путь к скрипту, который вызвал
текущая команда. Значение этого свойства равно
заполняется только в том случае, если вызывающий объект является скриптом.
PSCommandPath Содержит полный путь и имя файла скрипта.
, вызвав текущую команду. Значение этого объекта
свойство заполняется только в том случае, если вызывающим является
.

$PSScriptRoot В отличие от переменных и $PSCommandPath automatic, свойства PSScriptRoot и PSCommandPath автоматической переменной $MyInvocation содержат сведения о вызывающем объекте или вызывающем скрипте, а не о текущем скрипте.

$NestedPromptLevel

Содержит текущий уровень запроса. Значение 0 указывает исходный уровень запроса. Значение увеличивается при входе на вложенный уровень и уменьшается при выходе из него.

Например, PowerShell представляет вложенную командную строку при использовании $Host.EnterNestedPrompt метода . PowerShell также предоставляет вложенную командную строку при достижении точки останова в отладчике PowerShell.

При вводе вложенной строки PowerShell приостанавливает текущую команду, сохраняет контекст выполнения и увеличивает значение переменной $NestedPromptLevel . Чтобы создать дополнительные вложенные командные строки (до 128 уровней) или вернуться в исходную командную строку, выполните команду или введите exit.

Переменная $NestedPromptLevel помогает отслеживать уровень запроса. Вы можете создать альтернативную командную строку PowerShell, содержащую это значение, чтобы оно всегда отображалось.

$null

$null — это автоматическая переменная, содержащая значение NULL или пустое значение. Эту переменную можно использовать для представления отсутствующего или неопределенного значения в командах и скриптах.

PowerShell обрабатывается $null как объект со значением, т. е. как явный заполнитель, поэтому можно использовать для $null представления пустого значения в ряде значений.

Например, если $null объект включен в коллекцию, он считается одним из объектов .

$a = "one", $null, "three"
$a.count
3

Если передать $null переменную в ForEach-Object командлет, она создает значение для $null, как и для других объектов.

"one", $null, "three" | ForEach-Object { "Hello " + $_}
Hello one
Hello
Hello three

В результате вы не можете использовать $null значение параметра. Значение $null параметра переопределяет значение параметра по умолчанию.

Тем не менее, так как 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

$PID

Содержит идентификатор процесса (PID) процесса, в котором размещается текущий сеанс PowerShell.

$PROFILE

Содержит полный путь к профилю PowerShell для текущего пользователя и текущего ведущего приложения. Эту переменную можно использовать для представления профиля в командах. Например, его можно использовать в команде, чтобы определить, был ли создан профиль:

Test-Path $PROFILE

Вы также можете использовать его в команде для создания профиля:

New-Item -ItemType file -Path $PROFILE -Force

Его можно использовать в команде, чтобы открыть профиль в notepad.exe:

notepad.exe $PROFILE

$PSBoundParameters

Содержит словарь параметров, передаваемых в скрипт или функцию, и их текущих значений. Эта переменная имеет значение только в область, где объявлены параметры, такие как скрипт или функция. Его можно использовать для отображения или изменения текущих значений параметров или для передачи значений параметров другому скрипту или функции.

В этом примере функция Test2 передает в функцию $PSBoundParametersTest1 . Отображаются $PSBoundParameters в формате Ключ и Значение.

function Test1 {
   param($a, $b)

   # Display the parameters in dictionary format.
   $PSBoundParameters
}

function Test2 {
   param($a, $b)

   # Run the Test1 function with $a and $b.
   Test1 @PSBoundParameters
}
Test2 -a Power -b Shell
Key   Value
---   -----
a     Power
b     Shell

$PSCmdlet

Содержит объект , представляющий выполняемый командлет или расширенную функцию.

Вы можете использовать свойства и методы объекта в коде командлета или функции, чтобы реагировать на условия использования. Например, свойство ParameterSetName содержит имя используемого набора параметров, а метод ShouldProcess добавляет параметры WhatIf и Confirm в командлет динамически.

Дополнительные сведения об автоматической переменной см. в $PSCmdlet разделе about_Functions_CmdletBindingAttribute и about_Functions_Advanced.

$PSCommandPath

Содержит полный путь и имя файла выполняемого скрипта. Эта переменная допустима во всех сценариях.

$PSCulture

Содержит имя языка и региональных параметров, используемых в настоящее время в операционной системе. Язык и региональные параметры определяют формат отображения таких элементов, как числа, валюта и даты, и хранятся в объекте System.Globalization.CultureInfo . Используйте Get-Culture для отображения языка и региональных параметров компьютера. $PSCulture содержит значение свойства Name .

$PSDebugContext

Во время отладки эта переменная содержит сведения о среде отладки. В противном случае он содержит значение NULL . В результате его можно использовать, чтобы указать, имеет ли отладчик управление. При заполнении он содержит объект PsDebugContext со свойствами Точки останова и InvocationInfo . Свойство InvocationInfo имеет несколько полезных свойств, включая свойство Location . Свойство Location указывает путь к отлаживаемом скрипту.

$PSHOME

Содержит полный путь к каталогу установки Для PowerShell, как правило, $env:windir\System32\PowerShell\v1.0 в системах Windows. Эту переменную можно использовать в путях к файлам PowerShell. Например, следующая команда выполняет поиск слова переменной в концептуальных разделах справки:

Select-String -Pattern Variable -Path $pshome\*.txt

$PSItem

Эквивалентно $_. Содержит текущий объект в объекте конвейера. Эту переменную можно использовать в командах, выполняющих действие с каждым объектом или с выбранными объектами в конвейере.

$PSScriptRoot

Содержит каталог, из которого выполняется скрипт.

В PowerShell 2.0 эта переменная действительна только в модулях скриптов (.psm1). Начиная с 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

Содержит хэш-таблицу только для чтения, которая отображает сведения о версии PowerShell, работающей в текущем сеансе. Таблица содержит следующие элементы:

Свойство Описание
PSVersion Номер версии PowerShell
PSEdition Это свойство имеет значение "Desktop" для
PowerShell 4 и ниже, а также PowerShell
5.1 в полнофункциональный выпуск Windows.
Это свойство имеет значение "Core" для
PowerShell 6 и более поздних версий, а также PowerShell
PowerShell 5.1 в выпусках с уменьшенным объемом памяти
например, Windows Nano Server или Windows IoT.
GitCommitId Идентификатор фиксации исходных файлов в GitHub
ОС Описание операционной системы,
PowerShell запущен в .
Платформа Платформа, на которую работает операционная система
в. В Linux и macOS используется значение Unix.
См. разделы $IsMacOs и $IsLinux.
PSCompatibleVersions Совместимые версии PowerShell
с текущей версией
PSRemotingProtocolVersion Версия удаленного репозитория PowerShell
протокол управления.
SerializationVersion Версия метода сериализации
WSManStackVersion Номер версии стека WS-Management

$PWD

Содержит объект path, представляющий полный путь к текущему каталогу.

$Sender

Содержит объект , создающий это событие. Эта переменная заполняется только в блоке Action команды регистрации события. Значение этой переменной также можно найти в свойстве Sender возвращаемого объекта Get-EventPSEventArgs.

$ShellId

Содержит идентификатор текущей оболочки.

$StackTrace

Содержит трассировку стека для последней ошибки.

$switch

Содержит перечислитель, а не результирующее значение инструкции Switch . Переменная $switch существует только во время выполнения инструкции Switch ; она удаляется после switch завершения выполнения инструкции. Дополнительные сведения см. в разделе about_Switch.

Перечислители содержат свойства и методы, которые можно использовать для получения значений цикла и изменения текущей итерации цикла. Дополнительные сведения см. в разделе Использование перечислителей.

$this

В блоке скрипта, определяющем свойство скрипта или метод скрипта $this , переменная ссылается на расширяемый объект.

В пользовательском классе переменная ссылается на сам объект класса, предоставляющий доступ к свойствам и методам, $this определенным в классе .

$true

Содержит значение True. Эту переменную можно использовать для представления true в командах и скриптах.

Использование перечислителей

Переменные $input, $foreachи $switch — это перечислители, используемые для итерации значений, обработанных содержащим их блоком кода.

Перечислитель содержит свойства и методы, которые можно использовать для продвижения, сброса итерации или получения значений итерации. Не рекомендуется управлять перечислителями напрямую.

  • В циклах следует предпочтительнее использовать ключевые слова управления потоком.

  • В функциях, которые принимают входные данные конвейера, рекомендуется использовать параметры с атрибутами ValueFromPipeline или ValueFromPipelineByPropertyName .

    Дополнительные сведения см. в разделе about_Functions_Advanced_Parameters.

MoveNext

Метод MoveNext перемещает перечислитель к следующему элементу коллекции. MoveNext возвращает значение True , если перечислитель был успешно расширен, False , если перечислитель прошел конец коллекции.

Примечание

Логическое значение, возвращенное методом MoveNext, отправляется в поток вывода. Вы можете отключить выходные данные, наведя их [void] в или по конвейеру в Out-Null.

$input.MoveNext() | Out-Null
[void]$input.MoveNext()

Reset

Метод Reset задает перечислитель в исходное положение, которое находится перед первым элементом в коллекции.

Текущие

Свойство Current получает элемент в коллекции или конвейере в текущей позиции перечислителя.

Свойство Current продолжает возвращать то же свойство, пока не будет вызван метод MoveNext .

Примеры

Пример 1. Использование переменной $input

В следующем примере доступ к переменной $input очищает переменную до следующего выполнения блока процесса. При использовании метода Reset переменная сбрасывается $input до текущего значения конвейера.

function Test
{
    begin
    {
        $i = 0
    }

    process
    {
        "Iteration: $i"
        $i++
        "`tInput: $input"
        "`tAccess Again: $input"
        $input.Reset()
        "`tAfter Reset: $input"
    }
}

"one","two" | Test
Iteration: 0
    Input: one
    Access Again:
    After Reset: one
Iteration: 1
    Input: two
    Access Again:
    After Reset: two

Блок процесса автоматически перемещает переменную, $input даже если вы не имеете к ней доступа.

$skip = $true
function Skip
{
    begin
    {
        $i = 0
    }

    process
    {
        "Iteration: $i"
        $i++
        if ($skip)
        {
            "`tSkipping"
            $skip = $false
        }
        else
        {
            "`tInput: $input"
        }
    }
}

"one","two" | Skip
Iteration: 0
    Skipping
Iteration: 1
    Input: two

Пример 2. Использование $input за пределами блока процесса

Вне блока $input процесса переменная представляет все значения, переданные в функцию.

  • Доступ к переменной $input очищает все значения.
  • Метод Reset сбрасывает всю коллекцию.
  • Свойство Current никогда не заполняется.
  • Метод MoveNext возвращает значение false, так как коллекция не может быть расширена.
    • Вызов Метода MoveNext очищает переменную $input .
Function All
{
    "All Values: $input"
    "Access Again: $input"
    $input.Reset()
    "After Reset: $input"
    $input.MoveNext() | Out-Null
    "After MoveNext: $input"
}

"one","two","three" | All
All Values: one two three
Access Again:
After Reset: one two three
After MoveNext:

Пример 3. Использование $input. Текущее свойство

С помощью свойства Current можно получить доступ к текущему значению конвейера несколько раз без использования метода Reset . Блок процесса не вызывает автоматически метод MoveNext .

Свойство Current никогда не будет заполнено, если вы явно не вызовете MoveNext. В блоке процесса можно получить доступ к свойству Current несколько раз, не очищая его значение.

function Current
{
    begin
    {
        $i = 0
    }

    process
    {
        "Iteration: $i"
        $i++
        "`tBefore MoveNext: $($input.Current)"
        $input.MoveNext() | Out-Null
        "`tAfter MoveNext: $($input.Current)"
        "`tAccess Again: $($input.Current)"
    }
}

"one","two" | Current
Iteration: 0
    Before MoveNext:
    After MoveNext: one
    Access Again: one
Iteration: 1
    Before MoveNext:
    After MoveNext: two
    Access Again: two

Пример 4. Использование переменной $foreach

В отличие от переменной $input$foreach , переменная всегда представляет все элементы в коллекции при непосредственном доступе. Используйте свойство Current для доступа к текущему элементу коллекции, а методы Reset и MoveNext — для изменения его значения.

Примечание

Каждая итерация foreach цикла будет автоматически вызывать метод MoveNext .

Следующий цикл выполняется только дважды. Во второй итерации коллекция перемещается в третий элемент до завершения итерации. После второй итерации больше нет значений для итерации, и цикл завершается.

Свойство MoveNext не влияет на переменную, выбранную для итерации по коллекции ($Num).

$i = 0
foreach ($num in ("one","two","three"))
{
    "Iteration: $i"
    $i++
    "`tNum: $num"
    "`tCurrent: $($foreach.Current)"

    if ($foreach.Current -eq "two")
    {
        "Before MoveNext (Current): $($foreach.Current)"
        $foreach.MoveNext() | Out-Null
        "After MoveNext (Current): $($foreach.Current)"
        "Num has not changed: $num"
    }
}
Iteration: 0
        Num: one
        Current: one
Iteration: 1
        Num: two
        Current: two
Before MoveNext (Current): two
After MoveNext (Current): three
Num has not changed: two

Использование метода Reset сбрасывает текущий элемент в коллекции. В следующем примере два первых элемента перебираются дважды , так как вызывается метод Reset . После первых двух циклов оператор завершается if сбоем, и цикл обычно выполняет итерацию по всем трем элементам.

Важно!

Это может привести к бесконечному циклу.

$stopLoop = 0
foreach ($num in ("one","two", "three"))
{
    ("`t" * $stopLoop) + "Current: $($foreach.Current)"

    if ($num -eq "two" -and $stopLoop -lt 2)
    {
        $foreach.Reset() | Out-Null
        ("`t" * $stopLoop) + "Reset Loop: $stopLoop"
        $stopLoop++
    }
}
Current: one
Current: two
Reset Loop: 0
        Current: one
        Current: two
        Reset Loop: 1
                Current: one
                Current: two
                Current: three

Пример 5. Использование переменной $switch

Переменная $switch имеет те же правила, что и $foreach переменная . В следующем примере показаны все понятия перечислителя.

Примечание

Обратите внимание, что случай NotEvaluated никогда не выполняется, даже если после метода MoveNext нет break оператора.

$values = "Start", "MoveNext", "NotEvaluated", "Reset", "End"
$stopInfinite = $false
switch ($values)
{
    "MoveNext" {
        "`tMoveNext"
        $switch.MoveNext() | Out-Null
        "`tAfter MoveNext: $($switch.Current)"
    }
    # This case is never evaluated.
    "NotEvaluated" {
        "`tAfterMoveNext: $($switch.Current)"
    }

    "Reset" {
        if (!$stopInfinite)
        {
            "`tReset"
            $switch.Reset()
            $stopInfinite = $true
        }
    }

    default {
        "Default (Current): $($switch.Current)"
    }
}
Default (Current): Start
    MoveNext
    After MoveNext: NotEvaluated
    Reset
Default (Current): Start
    MoveNext
    After MoveNext: NotEvaluated
Default (Current): End

См. также раздел

about_Functions

about_Functions_Advanced

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_OutputTypeAttribute

about_Functions_CmdletBindingAttribute

about_Hash_Tables

about_Preference_Variables

about_Splatting

about_Variables