Code Aquarium

minazoko's blog -*- 水底のブログ -*-

(PowerShell) 配列を横一列に表示する

PowerShellでは、デフォルトでは配列は要素ごとに改行されて表示されます。

PS C:\> 1..5
1
2
3
4
5

Write-Host を使うと、横一列に出力されます。

PS C:\> Write-Host (1..5)
1 2 3 4 5

また、文字列内で変数展開を行うとスペースで連結した一行の文字列が得られます。

PS C:\> $a = 1..5
PS C:\> "$a"
1 2 3 4 5

文字列内で$()により包んだ式は評価されますので、次のようにも書けます。

PS C:\> "$(1..5)"
1 2 3 4 5

例えば、ディレクトリ内の特定のパターンのファイルをCSV形式で得たい場合など、こんな風にすると楽です。

PS C:\> cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319

PS C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319> "$(ls -name System.Xml.*.dll)" -replace "\s+",","
System.Xml.Linq.dll,System.Xml.ReaderWriter.dll,System.Xml.Serialization.dll,System.Xml.XDocument.dll,System.Xml.XmlSerializer.dll

追記

配列連結演算子 -join なるものがあるようです。こちらを使う方が簡単ですね。

PS C:\> 1..5 -join ","
1,2,3,4,5