Windows 如何使用whatif标志运行sdelete
我正在编写一个PowerShell脚本,用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 {
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
解决方案回答尝试此操作。效果很好。