有没有办法抑制 PowerShell 脚本中的任何交互式提示?

Chu*_*huu 14 powershell

在编写 PowerShell 脚本时,我注意到当某些 cmdlet 遇到问题时,它们会显示交互式提示,例如非空目录上的 Remove-Item。这在尝试自动化任务时是致命的,我更希望操作失败并抛出异常或返回错误的返回代码,以便整个脚本不会被锁定等待响应。

有没有办法强制 PowerShell 自动失败,而不是寻求用户对操作的输入?

Jay*_*uzi 5

Get-Help about_Preference_Variables

$确认首选项
------------------
    确定 Windows PowerShell 是否自动提示您
    在运行 cmdlet 或函数之前进行确认。

...

无:Windows PowerShell 不自动提示。
                         要请求确认特定命令,请使用
                         cmdlet 或函数的 Confirm 参数。

所以:

> $ConfirmPreference = 'None'
Run Code Online (Sandbox Code Playgroud)


Dam*_*ell 5

Eris 提出的解决方案有效地启动了另一个 PowerShell 实例。使用更简单的语法执行此操作的另一种方法是外壳到 powershell.exe 的另一个实例。

powershell.exe -NonInteractive -Command "Remove-Item 'D:\Temp\t'"
Run Code Online (Sandbox Code Playgroud)

  • 我真的很喜欢这个解决方案,但它带来了在 TRY/CATCH 之前用 TSQL 编写可靠存储过程的噩梦,这需要用错误检测样板来包围几乎每个查询。 (2认同)