2016-11-15 143 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