2016-11-24 57 views
0

我運行此命令,並獲取names.txt文件中的所有計算機主機名。 文件中的每個主機名都在單獨的行中,但每個主機名後面跟着空格,這會在嘗試讀取此文件時導致問題。我怎樣才能輸出到這個文件沒有得到每一行的空格?powershell out-file如何清除每行上的多餘空格

Get-ADComputer -Filter * | Select-Object -property name | Sort-Object -Property name | out-file -filepath C:\temp\names.txt 

回答

0

管涌它通過這應該工作(管道到出文件之前):

編輯:管道通過% { $_.name }應@ {名稱=值}轉換爲VALUE:

% { $_ -replace ' +$','' } | % { $_.name } 

像這樣:

Get-ADComputer -Filter * | Select-Object -property name | Sort-Object -Property name | % { $_ -replace ' +$','' } | % { $_.name } | out-file -filepath C:\temp\names.txt 
+0

不工作。 .getting like @ {name = AWS-TESTSERVER1}而不是AWS-TESTSEVER1 – ikask

+0

我認爲應該d訣竅。它返回一個散列表,其中'name = VALUE',所以你可以做foreach並選擇鍵:'%{$ _。name}' – anthonybell

+0

我認爲這個正則表達式是不正確的。試試'\ s + $'代替。 – Moerwald

0

expandprop erty應該擺脫@()的

Get-ADComputer -Filter * | sort Name | Select -expandproperty Name | %{ $_.TrimEnd(" ") } | out-file -filepath C:\temp\names 

未經測試沒有AD @家

3

你,你不只是名字,你有屬性「名稱」的對象問題,你還有問題,Out-File運行復雜的對象之前通過某種格式發送到文件之前。

要解決這兩個,拓展出了名的,只是文字,一般採用Set-Content代替:

Get-ADComputer -filter * | Select-Object -ExpandProperty Name | Sort-Object | Set-Content C:\temp\names.txt 

或短格式

Get-ADComputer -filter * | Select -Expand Name | Sort | sc C:\temp\names.txt 

(Get-ADComputer -filter *).Name | sort | sc C:\temp\names.txt 
+0

感謝您對短表的分解。我不知道點運算符與選擇對象相同! – LavaHot