powershell - 如何将警告捕获到日志
问题描述
我有一个脚本来管理 hyper-v 虚拟机。当我执行命令关闭机器时,如果它被关闭,我需要将警告保存在日志中。
我的脚本只捕获错误,我需要同时获取错误和警告:
Try {
Stop-VM $Machine -ErrorAction Stop
} Catch {
Write-Host "Error: $_"
Add-Content -Path $Log -Value "`n$_"
}
谢谢!
解决方案
假设Stop-VM
发出非终止错误:
Stop-VM $Machine *> output.log
注意:这会将PowerShell 的所有输出流重定向到 file output.log
,包括成功输出(如果有),并且可以在.$Machine
正如Abraham Zinala指出的那样,您可以在variables中选择性地捕获(一些)输出流,使用common参数以及,稍后您可以根据需要将其发送到文件。请注意,使用这些变量仍会产生原始流输出,但您可以使用和将其静音。有关详细信息,请参阅下面链接的答案。-WarningVariable
-ErrorVariable
-WarningAction SilentlyContinue
-ErrorAction SilentlyContinue
正如Santiago Squarzon指出的那样,您可以通过添加来扩展您的原始方法-WarningAction Stop
,但正如本答案中所解释的那样,限制是只有调用发出的第一个错误或警告才会被捕获,而且,也许更重要的是,命令是在该点终止- 即使指定了多个虚拟机。
推荐阅读
- javascript - MVC .NET Core UseStaticFiles OnPrepareResponse 未命中 JavaScript 文件
- vue.js - 我可以在定义路由的元数据时访问路由器查询参数吗?
- reactjs - 使用 React Native 应用程序实现强制更新
- regex - Delphi 中的 RegEx 去除字符串中的回车符和换行符
- selenium-webdriver - 为什么 Selenium 有时会跳过复选框?
- python - 如何在 spyder 中激活这种菜单
- java - 如何区分来自同一个队列的不同 JMS 文本消息?
- python - Python 同步代码示例比异步更快
- azure - 我可以将 Azure 的 ServiceBusTrigger 与 ReceiveMode 一起使用吗?
- jquery - 如何针对不同的 AutoComplete 的 ui-autocomplete 定位单个 CSS