【问题标题】:Powershell: WMI Ping piped to variablePowershell:WMI Ping 通过管道传输到变量
【发布时间】:2014-05-23 10:05:57
【问题描述】:

我在让我的 PowerShell 脚本按我希望的方式工作时遇到了一些困难,我在这里玩了很多游戏。

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

我仅根据我对脚本编写的糟糕知识构建了以下内容,但遇到了障碍。

我的想法是将 DNS/IP 信息从 CSV 传递到一个变量中,然后我可以使用该变量来根据 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}
}

【问题讨论】:

    标签: loops powershell wmi ping


    【解决方案1】:

    假设您有文件 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"
         }
    }
    

    【讨论】:

    • 最近发现这个代码:$results | Export-Csv -Path "C:\CSV\Results.csv" -Encoding UTF8 -Delimiter ';' -NoTypeInformation
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    相关资源
    最近更新 更多