2016-11-15 140 views
-1

我在学习Powershell时使用了本网站。迄今为止它是一个很好的帮助!使用Powershell将内容输出为CSV

这里是我的问题:

我试图写一个脚本,将采取工作站的名称,拉从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_names.csv文件中列出了10个工作站名称)。

我坐在这里用我对Powershell的全面知识抓住我的脑袋。我知道我可能需要这样的东西,从第一个.csv文件创建的数组,但我不知道如何编码我需要的东西。任何帮助?

回答

0

4c74356b41的脚本将有以下几个原因

  • 失败它-header没有-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 
+0

谢谢,我假设他检查了哪些属性:)并为错别字 – 4c74356b41

+0

Yowza,我走了。这完全按照我想要的那样工作。非常感谢您的反馈并帮助每个人! – Ozar

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。

+0

为什么不直接管到'出口,Csv'? (即'ForEach-Object {...} | Export-Csv ...') –

+0

好吧,我想你可以做到这一点。 – 4c74356b41