Powershell - ошибка WMI через удаленное соединение
Я написал скрипт на powershell, scrips собирает информацию о состоянии некоторых системных служб, например, службы DHCP на удаленных хостах. Иногда возникает проблема с подключением к удаленным хостам и сбором информации из WMI. Команда WMI ниже:
$DHCP = Get-WmiObject win32_service -ComputerName $server 2>>$logerror2 |
Where-Object -FilterScript {$_.Name -eq "dhcp"}
Я создал объект с двумя свойствами:
[pscustomobject][ordered]@{
ServerName = $server
DHCP = $DHCP.State
}
Вывод направляется в файл.csv, содержимое файла выглядит так:
"ServerName","DHCP"
"srv1","Running"
"srv2",,
"srv3",,
На хостах с именами "srv2" и "srv3" существует проблема с подключением и сбором информации с удаленных хостов WMI. Я хотел бы вместо пустого пространства дать некоторую информацию, например, "Проблема WMI", и содержимое файла должно выглядеть так:
"ServerName","DHCP"
"srv1","Running"
"srv2",WMI Problem,
"srv3",WMI Problem,
2 ответа
Решение
Попробуйте это, должно быть в порядке:
## Clear the Error variable incase the last server had an error ##
if ($error)
{
$error.clear()
}
## Attempt to do the WMI command ##
try
{
$DHCP = Get-WmiObject win32_service -ComputerName $server -erroraction stop | Where-Object {$_.Name -eq "dhcp"}
}
Catch
{
$errormsg = $_.Exception.Message
}
## If the WMI command errored then do this ##
if ($error)
{
[pscustomobject][ordered]@{
ServerName = $server
DHCP = $errormsg
}
}
## If the WMI command was successful do this ##
Else
{
[pscustomobject][ordered]@{
ServerName = $server
DHCP = $DHCP.State
}
}
Взяв страницу из ответа @ Диззи.
$CSV = Foreach ($Server in $ServerList)
{
$ServerObj = [pscustomobject][ordered]@{
ServerName = $server
DHCP = $null
}
## Attempt to do the WMI command ##
try
{
$DHCP = Get-WmiObject win32_service -ComputerName $server -erroraction stop | Where-Object {$_.Name -eq "dhcp"}
[String]$ServerObj.DHCP = $DHCP.State
}
Catch
{
$errormsg = $_.Exception.Message
[String]$ServerObj.DHCP = $errormsg
}
$ServerObj
}
$CSV | Export-Csv .\result.csv -NoTypeInformation