Windows 如何使用whatif标志运行sdelete

Windows 如何使用whatif标志运行sdelete,windows,powershell,command-line,Windows,Powershell,Command Line,我正在编写一个PowerShell脚本,用Get ChildItem查找目录,并将它们传递给sdelete。我想试一下。我认为sdelete没有-WhatIf标志。有什么方法可以实现类似的功能吗?您可以通过在函数顶部的CmdletBinding语句中添加SupportShouldProcess和在代码中添加if($pscmdlet.ShouldProcess(something){}块来实现-WhatIf和-Confirm功能 例如: Function Remove-WithSDelete {

我正在编写一个PowerShell脚本,用
Get ChildItem
查找目录,并将它们传递给
sdelete
。我想试一下。我认为
sdelete
没有
-WhatIf
标志。有什么方法可以实现类似的功能吗?

您可以通过在函数顶部的CmdletBinding语句中添加
SupportShouldProcess
和在代码中添加
if($pscmdlet.ShouldProcess(something){}
块来实现
-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".

confirmpact
部分是可选的,用于定义自动调用
-Confirm
的级别。如果函数的影响级别等于或大于您的
$ConfirmPreference
级别,
-Confirm
将是默认行为(无需显式调用它。您可以通过执行
-Confirm:$false
)将其强制关闭。如果忽略它,您的函数确认级别默认为“中等”。
$ConfirmPreference
变量的默认级别为“高”.

删除项目的中途暂停…-WhatIf
解决方案回答尝试此操作。效果很好。