(書きかけ)
パラメータの渡し方
「位置パラメータ」と「名前付きパラメータ」
例: ls。 「ls .」← . は位置パラメータ。 「ls -Path .」← Path という名前の付いたパラメータ
パイプラインを通して値を渡す。 Where-Object とか ForEach-Object の -InputObject パラメータなんかはどの受け取り方もできる。
必須 位置 既定値 パイプライン入力を許可する ワイルドカード文字を許可する
Parameter required?true Parameter position?1 Parameter type String Default value Accept multiple values?false Accepts pipeline input?true Accepts wildcard characters?true
common parameter man about_commonparameters Verbose Debug ErrorAction ErrorVariable OutVariable OutBuffer 共通パラメータに加えて、システムの状態を変更するコマンドレットがサポート しているパラメータが 2 つあります。 WhatIf Confirm
実体は Cmdlet クラスを継承したクラス
引数はプロパティで受け取る
名前付きパラメータの場合、プロパティ名がそのままパラメータ名に。 位置パラメータの場合、 PositionAttribute 属性を付けて位置を指定。
begin, process, end
パイプラインの挙動
> 1,2,3,4 |
%{Start-Sleep 0.3; Write-Warning 1; $_ } |
%{Start-Sleep 0.5; Write-Warning 2; $_ } |
%{Start-Sleep 0.7; Write-Warning 3; $_ }
警告: 1
警告: 2
警告: 3
1
警告: 1
警告: 2
警告: 3
2
警告: 1
警告: 2
警告: 3
3
警告: 1
警告: 2
警告: 3
4
↑きっちりこの順で出るってことは、 各 Cmdlet が Enumerator みたいな挙動してるはず。 感覚的にはほんと、LINQ だわ。
SnapIn