16

-WhatIf のような場合、[CmdletBinding] 属性によって $PSCmdlet.ShouldProcess() が与えられます。-Verbose、-Debug、-PassThru などの一般的なコマンド ライン引数を実装するためのツールやプラクティスは他にありますか?

4

1 に答える 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 に答える