-WhatIf のような場合、[CmdletBinding] 属性によって $PSCmdlet.ShouldProcess() が与えられます。-Verbose、-Debug、-PassThru などの一般的なコマンド ライン引数を実装するためのツールやプラクティスは他にありますか?
2147 次
1 に答える
16
Write-Debug
パラメータとパラメータを自動的にWrite-Verbose
処理します。-Debug
-Verbose
-PassThru
技術的には一般的なパラメーターではありませんが、次のように実装できます。
function PassTest {
param(
[switch] $PassThru
)
process {
if($PassThru) {$_}
}
}
1..10|PassTest -PassThru
これは、コマンドレットで関数の PassThru 値を使用する例です。
function Add-ScriptProperty {
param(
[string] $Name,
[ScriptBlock] $Value,
[switch] $PassThru
)
process{
# Use ":" to explicitly set the value on a switch parameter
$_| Add-Member -MemberType ScriptProperty -Name $Name -Value $Value `
-PassThru:$PassThru
}
}
$calc = Start-Process calc -PassThru|
Add-ScriptProperty -Name SecondsOld `
-Value {((Get-Date)-$this.StartTime).TotalSeconds} -PassThru
sleep 5
$calc.SecondsOld
詳細については、Get-Help about_CommonParameters
をご覧ください。
于 2011-08-03T20:48:29.107 に答える