首页 > 解决方案 > 如何将警告捕获到日志

问题描述

我有一个脚本来管理 hyper-v 虚拟机。当我执行命令关闭机器时,如果它被关闭,我需要将警告保存在日志中。

我的脚本只捕获错误,我需要同时获取错误和警告:

Try {
    Stop-VM $Machine -ErrorAction Stop
} Catch {
    Write-Host "Error: $_"
    Add-Content -Path $Log -Value "`n$_"
}

谢谢!

标签: powershellhyper-v

解决方案


假设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,但正如本答案中所解释的那样,限制是只有调用发出的第一个错误或警告才会被捕获,而且,也许更重要的是,命令是在该点终止- 即使指定了多个虚拟机。


推荐阅读