サーチ…
前書き
自動変数は、Windows PowerShellによって作成および管理されます。 1つは、本の中のどんな名前でも変数を呼び出すことができます。これに対する唯一の例外は、PowerShellによって既に管理されている変数です。これらの変数は間違いなく、関数の隣にあるPowerShellでもっとも反復的なオブジェクトです( $?は最後の操作の成功/失敗の状態を示します)
構文
-
$$
- セッションが最後に受け取った最後のトークンを$$
ます。 -
$^
- セッションで受け取った最後の行の最初のトークンを含みます。 -
$?
- 最後の操作の実行状況が含まれます。 -
$_
- 現在のオブジェクトがパイプラインに含まれています
$ pid
現在のホスティングプロセスのプロセスIDが含まれています。
PS C:\> $pid
26080
ブール値
$true
と$false
は論理TRUEとFALSEを表す2つの変数です。
最初の文字(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
は、不在または未定義の値を表すために使用されます。
$null
は空の配列の空のプレースホルダとして使用できます:
PS C:\> $array = 1, "string", $null
PS C:\> $array.Count
3
ForEach-Object
ソースとして同じ配列を使用すると、$ nullを含む3つの項目すべてが処理されます。
PS C:\> $array | ForEach-Object {"Hello"}
Hello
Hello
Hello
注意してください!これがあることを意味ForEach-Object
さえ処理する $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
と$_
は同じ$PSItem
、同じ意味で使用できますが、 $_
がこれまでに最も一般的に使われています。
$?
最後の操作のステータスが含まれます。エラーがない場合、 True
設定され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
使用方法のヒント:formatコマンドレット(format-listなど)で$error
変数を使用する場合は、 -Force
スイッチを使用することに注意してください。それ以外の場合、formatコマンドレットは上記の方法で$error
内容を出力します。
エラーエントリは$Error.Remove($Error[0])
で削除できます。