PowerShell
ユーザ定義のタブ補完機能が利用できる。Windowsのcmd.exeはファイル名やディレクトリ名しか補完できなかった。
コマンドの出力を変数に代入することができる。この変数はオブジェクトやオブジェクトの配列であり、後に任意の方法で処理することができる。
PowerShellの文が可変長個数のオブジェクトを返す場合、既定値では0個の場合は$nullが、1個の場合はオブジェクトが、2個以上の場合はオブジェクトの配列を返す。明示的に配列を返したい場合は "@()"で文をくくる。この考慮が洩れると次の例のように一見予想外の挙動をする。# Get-ChildItem が返戻する要素数が1のため、$bad には サイズ1024バイトのファイルを表すFileInfo型のオブジェクトが代入される。 $bad = Get-ChildItem "1個のサイズ1024バイトのファイルがあるディレクトリ" # 一見、$bad.Lengthはディレクトリの要素数1が予想されるが、結果は1024が帰ってくる。$badは配列ではなくFileInfo型のオブジェクトで、Lengthプロパティが1024のためである。 $bad.Length 1024 # !? # 明示的に配列を返したい場合は"@()"でくくる。 $good = @(Get-ChildItem "1個のサイズ1024バイトのファイルがあるディレクトリ" ) # $goodは正しく要素数1の配列のため、Lengthプロパティは1になる。 $good.Length 1
2019年3月、PowerShell Core 6.2リリース。