在PowerShell中具有Export-Csv的协助

时间:2019-03-13 13:58:27

标签: powershell export-csv

我正在使用以下脚本引用带有计算机名称列表的txt文件,以查找每台计算机所使用的操作系统和操作系统版本。我可以将其显示在PowerShell中,但是我为将其导出到CSV文件所做的所有尝试都失败了。我在这里使用了其他文章,推荐使用Write-output和Export-csv,但我得到的只是错误(取决于位置),或者得到的CSV文件显示了长度和字符数。我不介意进行工作,但感觉好像我不明白如何放置管道并将结果保存到CSV文件。

$Computers = Import-Csv -Path "c:\Scripts\computers.txt" -Header "Name"
foreach ($Computer in $Computers) {
    try {
        Get-ADComputer -Identity $Computer.Name -Properties Name, operatingSystem, operatingSystemVersion |
            Select Name, operatingSystem, operatingSystemVersion
    } catch {
        $Computer.Name + " not in AD" |
            Export-Csv -Path .\computers-results.csv -NoTypeInformation
    }
}

1 个答案:

答案 0 :(得分:0)

尝试一下:

$Computers = Import-CSV -Path "c:\Scripts\computers.txt" -Header "Name"

$Result = ForEach ($Computer In $Computers)
{
  Try
  {
      Get-ADComputer -Identity $Computer.Name -Properties Name, operatingSystem, operatingSystemVersion | Select Name, operatingSystem, operatingSystemVersion
  }
  Catch
  {
      Write-Warning $Computer.Name + " not in AD"
  }
}

$Result | Export-CSV .\computers-results.csv -NoTypeInformation

这是通过将ForEach循环的结果与$Result变量进行比较来完成的,这是因为Get-ADComputer行的结果已返回到管道中。

循环完成后,$Result是对象的集合,然后我们可以将其发送到Export-CSV以转换为CSV文件。

请注意,我也将Catch部分更改为使用Write-Warning,因此您只会在控制台中看到无法访问的计算机,它们不会出现在输出文件中完全没有。