gpt4 book ai didi

powershell - 从多台计算机获取WMI数据并导出到CSV

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

因此,今天拥有一些不错的老式Powershell挫败感。我需要做的是:

  • 从文件
  • 获取计算机列表
  • 从Win32_OperatingSystem的那些计算机中查询“CSName”和“InstallDate”的计算机
  • 将InstallDate转换为可用的日期格式。
  • 将所有内容导出到.csv

  • 我已经尝试了许多不同的脚本迭代。我遇到了两个主要问题。一是即使使用 Export-Csv -Append我也无法导出并附加到.Csv。它仅采用第一个值,其余则不执行任何操作。第二点是,在传递 |时,我无法使datetime转换器正常工作。

    这是我尝试过的一些示例-均无用。

    此示例只是错误很多。似乎没有从管道中的WMI查询中继承 $_。看起来它正在尝试使用第一个管道中的数据,但我不确定。
        Get-Content -Path .\Computernames.txt | Foreach-Object {
    gwmi Win32_OperatingSystem -ComputerName $_) |
    Select-Object $_.CSName, $_.ConvertToDateTime($OS.InstallDate).ToShortDateString()
    } | Export-Csv -Path Filename -Force -Append -NoTypeInformation
    }

    这个简单地导出第一个值,而在导出.Csv时放弃其余值。
    $Computers = Get-Content -Path .\Computernames.txt
    foreach ($Computer in $Computers) {
    echo $Computer
    $OS = gwmi Win32_OperatingSystem -ComputerName $Computer
    $OS | Select-Object
    $OS.CSName,$OS.ConvertToDateTime($OS.InstallDate).ToShortDateString() |
    Export-Csv -Path $Log.FullName -Append
    }

    这确实获取了数据,但是当我尝试选择任何内容时,我得到了空值,但是我可以 echo很好。
    $OS = gwmi Win32_OperatingSystem -ComputerName $Computers
    $OS | Foreach-Object {
    Select-Object $_.CSName,$_.ConvertToDateTime($OS.InstallDate).ToShortDateString() |
    Export-Csv -Path $Log.FullName -Force -Append -NoTypeInformation
    }

    感觉应该很简单。我几乎可以毫不费力地用C#做到这一点,但是我无法让PS来完成我想要的事情。任何帮助将非常感激!

    最佳答案

    干得好,

    $Array = @() ## Create Array to hold the Data
    $Computers = Get-Content -Path .\Computernames.txt

    foreach ($Computer in $Computers)
    {
    $Result = "" | Select CSName,InstallDate ## Create Object to hold the data
    $OS = Get-WmiObject Win32_OperatingSystem -ComputerName $Computer

    $Result.CSName = $OS.CSName ## Add CSName to line1
    $Result.InstallDate = $OS.ConvertToDateTime($OS.InstallDate).ToShortDateString() ## Add InstallDate to line2
    $Array += $Result ## Add the data to the array
    }

    $Array = Export-Csv c:\file.csv -NoTypeInformation

    关于powershell - 从多台计算机获取WMI数据并导出到CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32257328/

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