gpt4 book ai didi

powershell - 写自定义错误登录RPC服务器不可用

转载 作者:行者123 更新时间:2023-12-02 23:29:32 27 4
gpt4 key购买 nike

当 GWMI 查询失败时,我想将自定义错误消息输出到日志。我可以捕获异常,但显然只有最后一个,因为我的错误文件中的输出只有列表中最后一台计算机的名称。我正在使用我知道没有启用 WMI 的计算机列表。每个条目都应该有一个条目。

我有一个文本文件中的域计算机列表,每个都在一行中,没有尾随字符。我使用 GWMI 遍历文件以获取网络信息。有些计算机没有启用 WMI,我想知道哪些计算机。我当前的脚本只是抛出一个:

gwmi : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
At line:12 char:17
+ $base = gwmi win32_networkadapterconfiguration -computername $comp | whe ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Get-WmiObject], COMException
+ FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

每当它循环通过没有启用 wmi 的机器时。

这不能识别引发异常的计算机。我想要的是每次 RPC server is unavailable...引发错误,将自定义错误消息写入带有引发异常的计算机名称的日志中。

我的脚本:
$computers = Get-Content -path f:\scripts\docs\computer_list_test.txt

if (F:\scripts\wmi_mac_output.txt){
rm F:\scripts\wmi_mac_output.txt
}

foreach ($comp in $computers) {

try
{

$base = gwmi win32_networkadapterconfiguration -computername $comp -ErrorAction Stop | where {$_.dnsdomain -eq "mydomain.com"}
$machine = $base.DNSHostName
$mac = $base.MACAddress
$ip = $base.IPAddress
"<COMPUTER>`n`tname: $machine`n`tMAC: $mac`n`tIP: $ip`n</COMPUTER>" | Out-File F:\scripts\wmi_mac_output.txt
}


catch [Exception]
{
if ($_.Exception.GetType().Name -eq "COMException")
{
"$comp has no winrm" > f:\scripts\docs\error.txt
}
}
}

谢谢你。

最佳答案

I can catch the exception, but apparently only the last one, because the output in my error file only has the name of the last computer in the list.



问题是 error.txt 被覆盖而不是附加。
"$comp has no winrm" > f:\scripts\docs\error.txt

更改为:
"$comp has no winrm" >> f:\scripts\docs\error.txt

关于powershell - 写自定义错误登录RPC服务器不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17750449/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com