Powershell - 通过远程连接的WMI错误

时间:2017-10-02 15:14:48

标签: powershell variables wmi export-to-csv pscustomobject

我在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 个答案:

答案 0 :(得分:1)

试试这个,应该没问题:

INSERT INTO Users (FullName, Pseudo, Mail, Password, Organism, RegistredAt, Confirmed) 
VALUES (@FullName, @Pseudo, @Mail, @Password, @Organism, @RegistredAt, @Confirmed)

答案 1 :(得分:0)

从@Dizzy的答案中取一页。

$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