Powershell:WMI Ping用管道传输到变量

时间:2014-05-23 10:05:57

标签: loops powershell wmi ping

我在使PowerShell脚本工作方面遇到了一些困难,因为我喜欢它,并且经过多次jiggery-pokery,我在这里。

我的总体目标相当简单,不幸的是我有点像PowerShell菜鸟! 我正在试图确定我们庄园中所有系统的名称,制造商和型号,而不必四处盯着大量的锡。

我仅根据我对脚本的不了解而构建了以下内容,并且遇到了麻烦。

我的想法是将来自CSV的DNS / IP信息传递给变量,然后我可以依次使用该变量来执行基于Ping结果的WMI查询。 假Ping响应=不查询 True Ping响应=执行WMI查询

这是我到目前为止所得到的......

Test-connection -computername
foreach ($Ping in $Hosts) 
{
     test-connection -computername $Ping.IP -count 1 -quiet
     if ($Ping.StatusCode -eq 0)
     {Get-WmiObject win32_computersystem -computername $ip.Name | select Name,Manufacturer,Model } out-file c:\CSV\Test1.csv -ea SilentlyContinue}
     else
     {write-host $Hosts.Status Offline}
}

1 个答案:

答案 0 :(得分:0)

假设你有文件C:\ CSV \ Hosts.csv,内容如下所述:

computer1.mydomain.com
computer2.mydomain.com

使用以下脚本,您将获得文件C:\ CSV \ Results.csv:

$Hosts = Get-Content "C:\CSV\Hosts.csv"

foreach ($PingIP in $Hosts) 
{

     $alive = Test-Connection -ComputerName "$PingIP" -count 1 -quiet
     if ($alive)
     {
        Get-WmiObject Win32_ComputerSystem -ComputerName "$PingIP" | Select Name, Manufacturer, Model | Out-File "C:\CSV\Results.csv" -ea SilentlyContinue
     }
     else
     {
        Write-Output "$PingIP offline"
     }
}