您可以輕鬆創建一個「沒有多餘的裝飾」實施Out-String
的東西,如:
filter ConvertTo-String { "$_" }
這脅迫傳遞給過濾器轉換成字符串(使用PowerShell的字符串擴展調用ToString
在非空的對象,並改變$null
到一個空字符串)的任何對象。
下面五行的示例輸入運行過濾器,過濾器將它們轉換成相應的字符串的值(整數變得'1'
,雙'2.3'
,空''
,字符串'four'
,和哈希表'System.Collections.Hashtable'
):
1,2.3,$null,'four',@{five=6} | ConvertTo-String
運行於的Get-ChildItem
(別名ls
)的輸出處的濾波器產生類似的結果:
PS> Get-ChildItem
Directory: C:\Windows\System32\WindowsPowerShell\v1.0
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 13 Jul 2009 11:56 PM en-US
d---- 13 Jul 2009 11:52 PM Examples
d---- 13 Jul 2009 11:52 PM Modules
-a--- 13 Jul 2009 8:14 PM 452608 powershell.exe
-a--- 12 May 2012 10:28 AM 436 powershell.exe.config
...
PS> Get-ChildItem | ConvertTo-String
en-US
Examples
Modules
powershell.exe
powershell.exe.config
...
當您將對象轉換成字符串,就失去了原本的對象包含的信息和功能:
事實上,可以作出的唯一安全的轉換是,如果原來的對象是一個字符串。這也是唯一一次會出現「尾隨空白」。
(換句話說,它通常是更好的做法,堅持,只要有可能,而不是試圖仿效基於字符串的炮彈;-)的限制對象
這是爲什麼需要時即可只需輸出一個字符串? – 2013-03-22 14:14:54
因爲寬度是1024,所以還有額外的空間。擺脫寬度參數和額外的空間會消失。使用PowerShell,您不需要動態分配數組。也沒有這種東西無限的字符串。 「爲什麼需要這樣做,只要輸出一個字符串?」 – 2013-03-22 22:49:52
默認寬度爲80,因此將它關閉會讓事情變得更糟。 – 2013-03-23 11:58:00