Windows Server 2008 で PowerShell 3.0 を使ってみる。

Windows Server に PowerShell 1.0 が登場したのが、Windows Server 2008 でした。

デフォルトで搭載されてはいましたが、サーバーマネージャーの「機能の追加」でインストールする必要がありました。

(Windows Vista の場合は、KB928439 をインストールします。)

 

 

その後、Windows Server 2008 R2 や Windows 7 では、バージョンアップした PowerShell 2.0 が、最初から使えるようになりました。

そして Windows Server 2012 や Windows 8 では  PowerShell 3.0 になりました。

 

 

この PowerShell 3.0 を、Windows Server 2008 にインストールできるということを今日初めて知りました。

(Windows Server 2008 R2 と同じ PowerShell 2.0 をインストールできることは知っていたのですが。)

あらかじめ Service Pack 2 を適用しておく必要があり、.NET Framework など複数のコンポーネントをインストールする必要がありますが、Installing Windows PowerShell に手順がまとめられています。

 

 

さっそくインストールしてみたのですが、決して Windows Server 2012 と全く同じように使えるわけではないようです。

コマンドレットやモジュールの数にだいぶ差があるようなので、両 OS で比較してみました。

※ OS インストール後、「役割」を何も追加していない素の状態です。

 

 

まず powershell.exe を起動。

起動した時点で読み込まれているモジュールを比較するため、" Get-Module " を実行。

Windows Server 2008 --->  Microsoft.PowerShell.Management

Windows Server 2012 ---->  Microsoft.PowerShell.Management

どちらも一つだけであり、差はありません。

(コマンドプロンプト上で powershell.exe を実行している状態では、どちらもゼロです。)

 

 

次に、get-command で利用可能なコマンドレット数を比較します。

実行結果の行数をカウントするために、" (Get-Command).length " を実行。

Windows Server 2008 --->   349

Windows Server 2012 --->  1160

なんと、三倍以上の差があります。

 

 

同様にして、利用可能なモジュール数を比較します。

" (Get-Module -listAvailable).length " を実行。

Windows Server 2008 --->  13

Windows Server 2012 --->  55

こちらは四倍以上の差です。

 

 

最後に、利用可能なモジュールを全て読み込んだ状態でコマンドレット数を比較します。

" Get-Module -listAvailable | import-module   " を実行してから " (Get-Command).length " を実行。

Windows Server 2008 --->  349

Windows Server 2012 --->  1170

読み込む前と大差ありません。

 

 

というわけで、Windows Server 2012 と同等の処理は期待できません。