将输出和详细信息捕获到两个不同变量中是否可行?Powershell在不同变量中捕获输出和详细信息
我的要求:
我创建使用PowerShell和WPF GUI的地方有一个RichTextBox其中仅显示冗长和错误。
例如,如果我执行get-dscconfiguration -verbose,详细流应该到richtextbox并且该cmdlet的输出应该被分配给变量以便进一步manuplation。
请帮我做到这一点。谢谢!
-vinay
将输出和详细信息捕获到两个不同变量中是否可行?Powershell在不同变量中捕获输出和详细信息
我的要求:
我创建使用PowerShell和WPF GUI的地方有一个RichTextBox其中仅显示冗长和错误。
例如,如果我执行get-dscconfiguration -verbose,详细流应该到richtextbox并且该cmdlet的输出应该被分配给变量以便进一步manuplation。
请帮我做到这一点。谢谢!
-vinay
您可以捕获一个流到一个变量或多个流到一个变量,但除此之外,您需要发送到文件并读回或过滤捕获多个流的变量。例如,要仅捕获详细输出,可以将该命令作为子表达式运行。
$VerboseOnly = $($OutputOnly= .{
New-Item -ItemType Directory -Path c:\Test -Verbose
Remove-Item -Path c:\Test -Verbose
Remove-Item -Path c:\Test -Verbose
Write-Warning "warning"
}) 4>&1
当运行这个输出错误和警告的对象安慰,但冗长的对象将被保存到$ VerboseOnly和输出对象保存到$的outputOnly。
您可将多个数据流以及下面的示例所示:
$VerboseAndWarning = $(
$OutputOnly = .{
New-Item -ItemType Directory -Path c:\Test -Verbose
Remove-Item -Path c:\Test -Verbose
Remove-Item -Path c:\Test -Verbose
Write-Warning "warning"
}) 4>&13>&1
此时只有错误对象被写入到控制台,输出System.IO.DirectoryInfo对象是在$的outputOnly,和警告和详细消息在$ VerboseAndWarning中。然后,您可以通过使用where-object子句进行筛选来将其拉出。
$VerboseAndWarning | Where-Object {$_ -is [System.Management.Automation.WarningRecord]}
WARNING: warning
$VerboseAndWarning | Where-Object {$_ -is [System.Management.Automation.VerboseRecord]}
VERBOSE: Performing operation "Create directory" on Target "Destination: C:\Test".
VERBOSE: Performing operation "Remove Directory" on Target "C:\Test".
斯蒂芬,我爱你!这是我正在寻找的。谢谢! –
https://stackoverflow.com/a/33002914
上面的网址是回答另一个类似的问题,那很可能会帮助你。
他同时提供stdout和stderr,然后在完成之后分割它们。然而这并不是在飞行中完成的。
你可以简单地把每一个保存到它自己的变量中。
的可能的复制[Powershell的:捕获节目输出和错误给独立的变量(http://stackoverflow.com/questions/24222088/powershell-capture-program-stdout-and-stderr-to-separate-变数) – sodawillow