Windows PowerShellとは、Microsoft Windowsで利用できる強力なコマンドラインシェルおよびスクリプト言語のことだ。これまでのWindowsでは貧弱なコマンドプロンプトしか実装されていなかったので、コマンドラインで一括処理などをさせることが難しかった。それをUnixの同等以上の性能のシェルを開発することでその問題を解決した。
たとえば、Unix上で、
% find . -name "*.txt" -print
という処理は、
> Get-ChildItem . -include *.txt -recurse
とする。また、以下のスクリプトを、たとえば find.ps1 とファイルに保存すれば、
Param([String]$root, [String]$filename) Get-ChildItem $root -include $filename -recurse
> ./find.ps1 . *.txt
と実行すれば同じ結果を得ることができる。さらに、
> Get-WMIObject Win32_LogicalDisk -filter "DriveType = 3" | Select-Object DeviceID | ForEach-Object {Get-Childitem ($_.DeviceID + "\") -include *.txt -recurse}
とすれば、存在するすべてのハードディスク上のテキストファイルを探すことができる。PowerShell上ではすべてがオブジェクトとして処理される。
ただし、PowerShellはWindowsに最初から入っているわけではないので、Microsoftの公式サイトからダウンロードしてこなくてはならない。
Windows PowerShellでのスクリプティング
これでようやくWindowsでもまともな処理ができるかもしれない。
たとえば、Unix上で、
% find . -name "*.txt" -print
という処理は、
> Get-ChildItem . -include *.txt -recurse
とする。また、以下のスクリプトを、たとえば find.ps1 とファイルに保存すれば、
Param([String]$root, [String]$filename) Get-ChildItem $root -include $filename -recurse
> ./find.ps1 . *.txt
と実行すれば同じ結果を得ることができる。さらに、
> Get-WMIObject Win32_LogicalDisk -filter "DriveType = 3" | Select-Object DeviceID | ForEach-Object {Get-Childitem ($_.DeviceID + "\") -include *.txt -recurse}
とすれば、存在するすべてのハードディスク上のテキストファイルを探すことができる。PowerShell上ではすべてがオブジェクトとして処理される。
ただし、PowerShellはWindowsに最初から入っているわけではないので、Microsoftの公式サイトからダウンロードしてこなくてはならない。
Windows PowerShellでのスクリプティング
これでようやくWindowsでもまともな処理ができるかもしれない。
コメント