Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 从Invoke命令检索产生错误的计算机名_Powershell - Fatal编程技术网

Powershell 从Invoke命令检索产生错误的计算机名

Powershell 从Invoke命令检索产生错误的计算机名,powershell,Powershell,我正在加快脚本的执行速度,长话短说,它的核心看起来与此类似(减去Measure命令): 我想弄清楚的是,如果其中一个设备出现错误,我想将该设备名称存储在一个单独的文件中。在过去,我通过try/catch的foreach循环来完成所有这一过程,这使得这一部分非常简单。我希望通过这个解决方案避免这种情况。 现在,我使用的是post提供的2>“errors.txt”,但这记录了完整的错误,我不想这样。例如: [示例设备]连接到远程服务器示例设备失败,错误消息如下:WinRM无法处理 要求使用Kerbe

我正在加快脚本的执行速度,长话短说,它的核心看起来与此类似(减去
Measure命令
):

我想弄清楚的是,如果其中一个设备出现错误,我想将该设备名称存储在一个单独的文件中。在过去,我通过
try/catch
foreach
循环来完成所有这一过程,这使得这一部分非常简单。我希望通过这个解决方案避免这种情况。 现在,我使用的是post提供的
2>“errors.txt”
,但这记录了完整的错误,我不想这样。例如:

[示例设备]连接到远程服务器示例设备失败,错误消息如下:WinRM无法处理 要求使用Kerberos身份验证时发生以下错误:找不到计算机示例设备。核实 计算机存在于网络上,并且提供的名称拼写正确。有关更多信息,请参阅 关于远程故障排除帮助主题。 +CategoryInfo:OpenError:(示例设备:String)[],PSRemotingTransportException +FullyQualifiedErrorId:NetworkPathNotFound,PSSessionStateBreaked


我只希望在文件中记录设备的名称(在本例中为“示例设备”)。有办法做到这一点吗?

一种处理方法是设置
-ErrorActions-SilentlyContinue-ErrorVariable Errs

这使程序能够正常运行,而不会在整个屏幕上出现红色错误。然后,您可以查看存储在
$Errs
中的错误记录,以报告哪些机器出现问题。在您的情况下,
$Errs.tagTargetObject

演示可能类似于

Invoke-Command -ComputerName $Computers -ScriptBlock { "Whatever..." } -ErrorAction SilentlyContinue -ErrorVariable Errs

# PostOp Check which machines had errors:
$Errs.TargetObject
这应返回:

MrBogus
MrsBogus

当然,如果您想更可靠地格式化错误记录,可以对错误记录进行任意处理。

处理的一种方法是设置
-ErrorActions-SilentlyContinue-ErrorVariable Errs

这使程序能够正常运行,而不会在整个屏幕上出现红色错误。然后,您可以查看存储在
$Errs
中的错误记录,以报告哪些机器出现问题。在您的情况下,
$Errs.tagTargetObject

演示可能类似于

Invoke-Command -ComputerName $Computers -ScriptBlock { "Whatever..." } -ErrorAction SilentlyContinue -ErrorVariable Errs

# PostOp Check which machines had errors:
$Errs.TargetObject
这应返回:

MrBogus
MrsBogus

当然,如果您想更可靠地格式化错误记录,可以对错误记录进行任意处理。

您是否尝试过使用
-AsJob
启动此功能?然后,每个块将分别提供其输出,您将能够在该输出中仅包含相关内容。您是否尝试使用
-AsJob
启动此功能?然后,每个块将分别提供其输出,然后您将能够在该输出中仅包含相关的内容。非常有用,谢谢!很有魅力,谢谢!