2017-10-13 64 views
0

代碼:進口-CSV Powershell的

$Computers = Import-Csv -Path C:\temp\Computers.csv 
write-host $Computers 

CSV文件(其中US-1是A1,US-2是A2,依此類推)

US-1 
US-2 
US-3 
US-4 

我相信進口CSV是進口不正確的,因爲寫主機$計算機使我這個:

@ {US-1 = US-2} @ {US-1 = US-3} @ {US-1 = US-4}

但如果$ Computers被分配了th是這樣:

$Computers = "US-1", "US-2", "US-3", "US-4" 

輸出是正確的:

美國1 US-2 US-3 US-4

所以,我需要從CSV導入爲了方便,但有各計算機名保存正確的方式,沒有括號或符號。這使得在我的程序中使用計算機名稱非常困難。

編輯:作爲討論,我已經正確格式化CSV,現在是這樣的:

Computers, 
US-1 
US-2 
US-3 
US-4 

現在獲得輸出:

@ {計算機= US-1} @ {計算機= US- 2} @ {Computers = US-3} @ {Computers = US-4}

+0

奇怪的輸出。什麼數據類型是$電腦? – guiwhatsthat

+0

默認數據類型,最有可能的字符串,不確定。如果我爲堆棧溢出創建的整個測試程序看到了什麼 – Fingers

+0

發佈您的CSV文件樣本 – Manu

回答

1

簡單CSV

創建CSV(計算機。CSV):

Computer 
US-1 
US-2 
US-3 

中導入CSV:

$computers = Import-Csv Computers.csv 

訪問你的價值觀:

Write-Host $computers # This results to something like this: @{Computers=US-1} @{Computers=US-2} @{Computers=US-3} @{Computers=US-4} 
# This is perfectly fine. It's all of your computer-objects 

訪問每個值:

write-host $computers[n] # replace n with your index, starting at 0 to n-1 
write-host $computers[1] # results in US-2 

如果只有電腦感興趣你可以做這樣的事情:

write-host $computers.Computer # restults in US-1 US-2 US-3 US-4 

同樣更大的CSV:

Computers, OperatingSystem 
US-1, Windows 
US-2, Linux 
US-3, SomeOtherUnix 
US-4, MacOS 

導入您的CSV:

$computers = Import-Csv Computers.csv 

訪問你的價值觀:

Write-Host $computers # This results to something like this: 
# @{Computers=US-1; OperatingSystem=Windows} @{Computers=US-2; OperatingSystem=Linux} @{Computers=US-3; OperatingSystem=SomeOtherUnix} @{Computers=US-4; OperatingSystem=MacOS} 
# This is perfectly fine. It's all of your computer-objects 

訪問每個值:

write-host $computers[n] # replace n with your index, starting at 0 to n-1 
write-host $computers[1] # results in 

Computers OperatingSystem 
--------- --------------- 
US-1  Windows 

如果只有計算機/ OperatingSystems感興趣,你可以做這樣的事情:

write-host $computers.Computers # restults in US-1 US-2 US-3 US-4 
write-host $computers.OperatingSystem # restults in US-1 US-2 US-3 US-4 

等等...... :)

+0

comp是什麼意思?我也使用了每個循環後,所以我不能指個人電腦 – Fingers

+0

nvm,想通了,我的腳本現在運行良好,謝謝! – Fingers

+0

啊,我的壞!我有$ comp作爲我的腳本變量insted $電腦。爲了便於閱讀,我會編輯我的帖子。 – Akaino

1

您的CSV文件格式錯誤;它沒有標題行。重新生成文件以使其具有標題行,或使用-Header參數Import-CSV

一旦你有一個正確格式的CSV(或者用手動提供的標題導入),你將能夠引用$computers作爲一個PSObject的數組,其中每個PSObject包含一個提供名稱的成員 - 例如,如果您使用

$Computers = Import-CSV -Header "RegionName" -Path C:\TEMP\Computers.CSV 

然後您可以參考單個記錄爲$Computers[$n].RegionName

在對原始問題進行編輯之後,訪問數組中單個項目的正確方法是$Computers[$n].Computers。如原來描述的從文本文件中檢索計算機,無需使用字段名稱,請使用Get-Content而不是Import-CSV

+0

嗨,我已經查找了一個關於創建csv頭文件的指南,現在我的csv文件看起來像這樣: – Fingers

+0

如果您更改了CSV並仍然有問題,請更新您的問題以反映問題 - 或者提出一個新問題。 –

+0

是的,對不起,我打開註釋上的新行輸入,我發佈了它,我編輯了我原來的帖子 – Fingers