powershell - 尝试,catch 似乎不起作用

标签 powershell powershell-3.0

我有以下代码,我认为它可以让我捕获错误,而不是生成错误,写出“发生错误”。

不幸的是,它仍然显示错误“无法重新启动计算机:访问被拒绝”。

我知道为什么会发生这种情况,但我希望能够捕获错误并重新格式化。我究竟做错了什么?

try {
    Restart-Computer -ComputerName MFG-KY-PC74 -Force 
} catch {
    Write-Host "An Error Occurred"
}

最佳答案

在 PowerShell 中存在终止和非终止错误。前者终止脚本执行(如果没有被捕获)并且可以被 try..catch 捕获,后者不会终止脚本执行(所以没有什么可捕获的)。您收到的错误是非终止错误,因此您需要通过将 -ErrorAction Stop 附加到语句来使其成为终止错误:

try {
  Restart-Computer -ComputerName MFG-KY-PC74 -Force -ErrorAction Stop
} catch {
  write-host "An Error Occurred"
}

或者,如果您希望所有错误都变成终止错误,您可以设置 $ErrorActionPreference = "Stop"

有关更多信息,请参阅脚本专家博客上的 this article

关于powershell - 尝试,catch 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19542374/

相关文章:

Powershell 等待 dotnet run 在某个端口上启动应用程序

powershell - 以编程方式批量删除 Azure Blob 存储对象

java - Windows Powershell 在运行 jboss 7.1.1 时经常挂起

powershell - 如何创建哈希表以写入输出以进行调试?

powershell - 如何在powershell中遵循快捷方式

powershell - Powershell:在html报告的顶部一次显示表头

Powershell 按特定所有者列出文件

powershell - 在 PowerShell 中实现子命令模式

powershell - 模块内的 New-PSDrive 不起作用

powershell - 并行运行Quest cmdlet并将输出保存到文件