Поиск…


Вступление

Автоматические переменные создаются и поддерживаются Windows PowerShell. У одного есть возможность вызвать переменную как раз о любом имени в книге; Единственными исключениями для этого являются переменные, которые уже управляются PowerShell. Эти переменные, без сомнения, будут самыми повторяющимися объектами, которые вы используете в PowerShell рядом с функциями (например, $? - указывает состояние успеха / отказа последней операции)

Синтаксис

  • $$ - Содержит последний токен в последней строке, полученной сеансом.
  • $^ - Содержит первый токен в последней строке, полученной сеансом.
  • $? - Содержит статус выполнения последней операции.
  • $_ - Содержит текущий объект в конвейере

$ PID

Содержит идентификатор процесса текущего хостинга.

PS C:\> $pid
26080

Булевы значения

$true и $false - две переменные, которые представляют логические TRUE и FALSE.

Обратите внимание, что вы должны указать знак доллара в качестве первого символа (который отличается от C #).

$boolExpr = "abc".Length -eq 3 # length of "abc" is 3, hence $boolExpr will be True
if($boolExpr -eq $true){
    "Length is 3"
}
# result will be "Length is 3" 
$boolExpr -ne $true
#result will be False

Обратите внимание, что когда вы используете логическое значение true / false в вашем коде, вы записываете $true или $false , но когда Powershell возвращает логическое значение, оно выглядит как True или False

$ нулевой

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

PS C:\> $array = 1, "string", $null
PS C:\> $array.Count
3

Когда мы используем тот же массив, что и источник ForEach-Object , он обрабатывает все три элемента (включая $ null):

PS C:\> $array | ForEach-Object {"Hello"}
Hello
Hello
Hello

Быть осторожен! Это означает, что ForEach-Object WILL обрабатывает даже $null сам по себе:

PS C:\> $null | ForEach-Object {"Hello"} # THIS WILL DO ONE ITERATION !!!
Hello

Это очень неожиданный результат, если сравнить его с классическим циклом foreach :

PS C:\> foreach($i in $null) {"Hello"} # THIS WILL DO NO ITERATION
PS C:\>

$ OFS

Переменная, называемая разделителем выходных полей, содержит строковое значение, которое используется при преобразовании массива в строку. По умолчанию $OFS = " " ( пробел ), но его можно изменить:

PS C:\> $array = 1,2,3
PS C:\> "$array" # default OFS will be used
1 2 3
PS C:\> $OFS = ",." # we change OFS to comma and dot
PS C:\> "$array"
1,.2,.3

$ _ / $ PSItem

Содержит объект / элемент, который в настоящее время обрабатывается конвейером.

PS C:\> 1..5 | % { Write-Host "The current item is $_" }
The current item is 1
The current item is 2
The current item is 3
The current item is 4
The current item is 5

$PSItem и $_ идентичны и могут использоваться взаимозаменяемо, но $_ на сегодняшний день наиболее часто используется.

$?

Содержит статус последней операции. Когда нет ошибки, она установлена ​​в значение True :

PS C:\> Write-Host "Hello"
Hello
PS C:\> $?
True

Если есть некоторая ошибка, для нее установлено значение False :

PS C:\> wrt-host
wrt-host : The term 'wrt-host' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ wrt-host
+ ~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (wrt-host:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\> $?
False

$ ошибка

Массив из последних объектов ошибки. Первый в массиве - самый последний:

PS C:\> throw "Error" # resulting output will be in red font
Error
At line:1 char:1
+ throw "Error"
+ ~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Error:String) [], RuntimeException
    + FullyQualifiedErrorId : Error

PS C:\> $error[0] # resulting output will be normal string (not red    )
Error
At line:1 char:1
+ throw "Error"
+ ~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Error:String) [], RuntimeException
    + FullyQualifiedErrorId : Error

Советы по использованию: при использовании переменной $error в командлете формата (например, в списке форматов) вам следует использовать переключатель -Force . В противном случае командлет формата будет выводить содержимое $error в указанном выше порядке.

Записи ошибок можно удалить, например, $Error.Remove($Error[0]) .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow