如何使用whatif标志运行sdelete

时间:2017-07-03 10:36:14

标签: windows powershell command-line

我正在编写PowerShell脚本,找到包含Get-ChildItem的目录并将其传递给sdelete。我想试试吧。我不认为sdelete有一个-WhatIf标志。有什么方法可以实现类似的东西吗?

1 个答案:

答案 0 :(得分:4)

您可以通过将-WhatIf添加到函数顶部的CmdletBinding语句和-Confirm块代码中来实现SupportShouldProcessif ($pscmdlet.ShouldProcess(something) { }功能。

例如:

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强制关闭它) 。如果省略它,您的功能确认等级为"中等"默认情况下。 $ConfirmPreference变量的默认级别为"高"。