使用Powershell将内容输出到CSV

时间:2016-11-15 20:57:54

标签: powershell csv

我在学习Powershell的同时使用这个网站。到目前为止,这是一个很好的帮助!

这是我的问题:

我正在尝试编写一个脚本,该脚本将获取工作站名称,从WMI中提取工作站描述,将工作站名称和描述输出到新的.csv文件

这是我到目前为止所做的:

Get-Content -Path "workstation_names.csv" | Select-Object Workstations |
Foreach-Object { Get-WmiObject -Class Win32_OperatingSystem -ComputerName $workstations | Select Workstations, Description | Export-CSV -Path "results.csv" -NoTypeInformation }

workstation_names.csv有一个名为“工作站”的列,在其下面,每个单元格中都有一个工作站名称。目前我的脚本将创建一个输出文件,其中包含两列。一个称为“工作站”,另一个称为“描述”。 Workstation列为空,Description列仅包含其中第一个工作站描述的结果(即使我在workstation_names.csv文件中列出了10个工作站名称)。

我坐在这里,用我对Powershell的非常了解的方式摸不着头脑。我知道我可能需要使用从第一个.csv文件创建的数组,但我不知道如何编码我需要的代码。任何帮助?

2 个答案:

答案 0 :(得分:1)

可能这样的事情应该可以解决问题:

$inFile = "workstation_names.csv"
$results = @()
Import-CSV -path $inFile -header Workstations |
  % {$results += Get-WmiObject -Class Win32_OperatingSystem `
     -ComputerName $_.Workstations | Select PSComputerName, Description} 
$results | Export-Csv -Path "results.csv" -NoTypeInformation

所以要详细说明,你并没有真正导入CSV,而是导入原始文本文件,这很令人困惑,因为在这种情况下,我真的不明白有什么方法可以帮助你。此处脚本将创建一个数组来存储结果,将文件导入为CSV,循环显示贵重物品并将结果输出到CSV。

答案 1 :(得分:0)

4c74356b41的脚本会因多种原因失败

  • 这是-header not -headers
  • 有一个拼写错误%_而不是$_
  • select Workstations无效,因为gwmi没有属性

这只是稍微重写过的脚本应该这样做。

$inFile = "workstation_names.csv"
$results = @()
Import-CSV -path $inFile -header Workstations |
  % {$results += Get-WmiObject -Class Win32_OperatingSystem `
     -ComputerName $_.Workstations | Select PSComputerName, Description} 
$results | Export-Csv -Path "results.csv" -NoTypeInformation

要查看哪些属性可用,请参阅以下输出

GWmi -Class Win32_OperatingSystem -ComputerName localhost|gm|out-gridview