PowerShellスクリプトの実行例

では、最後にスクリプトの例を紹介しよう。このスクリプトはGet-WmiObjectコマンドレットを使い、Windowsの情報を得るものだ。まずは、OSの情報を表示させてみた。

Param([String]$computername=".")
$Wmiobjects = Get-WmiObject Win32_OperatingSystem -ComputerName $computername
foreach($Wmiobject in $WmiObjects)
{
    Write-Host "OS名: " $WmiObject.Name
    Write-Host "バージョン: " $WmiObject.Version
    Write-Host "ロケール: " $WmiObject.Locale
    Write-Host
}

実行結果は、図11となる。このスクリプトは、Get-OS.ps1というファイル名である。拡張子のps1は、PowersShellのスクリプトを意味する。このスクリプトファイルを実行するには、ファイルの相対パスを付けてプロンプトに入力する。たとえば、現在のディレクトリで実行するのであっても、「.\」を付加する(タブキーで自動補完されるが)。この例では「.\Get-OS.ps1」(拡張子はなくてもよい)とする。

図11 OSの情報の表示

Get-WmiObjectコマンドレットは、ハードウェアの情報を表示させることもできる。以下のスクリプトは、CPUの情報を表示する。

Param([String]$computername=".")
$cpus = Get-WmiObject Win32_Processor -ComputerName $computername
foreach($cpu in $cpus)
{
    Write-Host "CPU情報"
    Write-Host "CPU名:            " $cpu.Name
    Write-Host "キャプション:     " $cpu.Caption
    Write-Host "製造元:           " $cpu.Manufacturer
    Write-Host "ソケット形状:     " $cpu.SocketDesignation
    Write-Host "クロック数:       " $cpu.CurrentClockSpeed "MHz"
    Write-Host "L2キャッシュ容量: " $cpu.L2CacheSize "KB"
    Write-Host
}

実行結果は、図12となる.

図12 CPUの情報の表示

PowerShellに初めての読者には、少々、難しかったかもしれない。こんなこともできるということを理解していただければ幸いである。またスクリプトの実行には、実行ポリシーの変更も必要となる点を補足しておく。PowerShellは、もともと管理ツールとして開発されたものである。別名にlsがあるように、UNIXのシェル(bashやcsh)を非常に意識したものとなっており、対話型でもスクリプトでも強力な機能が使える。またリソースへのアクセスや.NET Frameworkのクラスライブラリの利用も可能である。管理以外でも、十分利用できる。この機会にコマンドレットやスクリプトを学ぶのもよいかもしれない。