2017-07-03 3 views
2

Get-ChildItemのディレクトリを探して、sdeleteに渡すPowerShellスクリプトを書いています。私はそれを試してみたいと思います。私はsdelete-WhatIfフラグがあるとは思わない。私が似たようなことを達成できる方法はありますか?whatifフラグを使ってsdeleteを実行するには

答えて

4

あなたのコードにあなたの関数の上部にCmdletBinding声明とif ($pscmdlet.ShouldProcess(something) { }ブロックにSupportShouldProcessを追加することにより、-WhatIf-Confirm機能を実装することができます。例えば

Function Remove-WithSDelete { 
    [CmdletBinding(SupportsShouldProcess,ConfirmImpact="High")] 
    Param ($File) 

    Process { 
    if ($pscmdlet.ShouldProcess($File)) { 
     & sdelete.exe $File 
    } 
    } 
} 

使用:

PS C:\> Remove-WithSDelete c:\temp -WhatIf 
What if: Performing the operation "Remove-WithSDelete" on target "c:\temp". 

ConfirmImpact一部はオプションであり、-Confirmが自動的に起動されるレベルを定義するために使用されます。関数の影響レベルが$ConfirmPreferenceレベル以上の場合、明示的に呼び出すことなく-Confirmがデフォルトの動作になります(-Confirm:$falseを実行することで強制的にオフにすることができます)。これを省略すると、デフォルトでConfirm Levelが "Medium"になります。 $ConfirmPreference変数のデフォルトレベルは "High"です。

+0

これを試すには、「Remove-item ... -WhatIf」回避策の途中で一時停止してください。魅力のように動作します。 – gms0ulman

関連する問題