考虑这一行:
Write-Warning "test" -wv +t
如果我之后运行此并验证$t
的内容,我会得到:
Message InvocationInfo PipelineIterationInfo
------- -------------- ---------------------
test System.Management.Automation.Invocation... {0, 0, 0}
这就是我的期望。
现在,如果我将这行代码转换为脚本,就像这样:
function WarnTest {
[CmdletBinding()]
param()
Write-Warning "test"
}
然后进行一个简单的函数调用:
WarnTest -wv +q
$q
$q
仍为空。我对此感到有些困惑 - 我的印象是[CmdletBinding()]
确保函数中的任何写警告都会被发送到警告流,因此可能会被-WarningVariable
捕获参数。
任何人都可以对此有所了解吗?
我需要这个的目的是测试哪些服务器在线(并将它们发送到标准输出)的功能,我还可以捕获那些离线的服务器的警告。
答案 0 :(得分:2)
在v2上试试这个:
function WarnTest {
[CmdletBinding()]
param()
$pscmdlet.WriteWarning("test")
}
您的原始功能似乎在PowerShell v3上正常运行。