2017-09-29 146 views
1

我的文件如下所示。我只需要列表中的carId列表。從輸出中拆分的PowerShell命令

我試圖運行命令:

Get-Content Carlist.txt | select-string carId | $_.split(':')[2].split(' ') 

Attachments  : {} 
State   : available 
accessory   : {} 
carId   : 53se 
carType  : bmw 

Attachments  : {} 
State   : available 
accessory   : {} 
carId   : 23nu 
carType  : audi 

Attachments  : {} 
State   : available 
accessory   : {} 
carId   : 94it 
carType  : merc 

回答

0

第二個命令的結果是一個列表,而在第三你要作用於該列表的單個元素。要做到這一點,你需要Foreach-Object。 所以,你的代碼變得(包括一些修正):

Get-Content Carlist.txt | select-string carId | Foreach-Object { $_.ToString().split(':')[1] -replace '\s','' } 
+0

其投擲的錯誤..我不知道爲什麼我們需要一個「替換」命令,因爲我需要拆分子串類似的東西.. PS C:\ Users \ Admin \ Desktop> Get-Content car.txt |選擇串carId carId:53se carId:23nu carId:94it我需要53se 23nu 94it只有 – gary

+0

我收到此錯誤方法調用失敗,因爲[Microsoft.PowerShell.Commands.MatchInfo]不包含名爲方法「分裂」。 在線:1 char:62 + ... t-string carId | Foreach-Object {$ _。split(':')[1] -replace'\ s',''} + ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ + CategoryInfo:InvalidOperation:(:) [],RuntimeException + FullyQualifiedErrorId:MethodNotFound – gary

+0

我忘了在我的第一個答案中添加ToString()修復。我使用替換,因爲拆分的輸出取決於文件中的空格,這是不理想的 – rzippo