はじめに
「Windows PowerShell」は、.NET Frameworkをベースとしたスクリプト&シェル環境です。2009年10月22日に発売されたWindows 7から標準でWindows PowerShell 2.0が搭載されることになりました。2006年11月に登場したPowerShell 1.0以来、約3年の歳月をかけて大幅に進歩したバージョンです。
本連載では、PowerShell 2.0の新機能にスポットをあて、何回かに分けて紹介していきます。今回は、新機能の概要について説明します。
対象OSとインストール
Windows PowerShell 2.0が標準搭載されているOSは、Windows 7とWindows 2008 R2です。それ以外ではWindows XP以降のOSで使用することができます。
参考までに、ダウンロード先リンク(表1)を示しますので、必要環境に合わせてダウンロードし、インストールを行ってください。
またWindows PowerShell 2.0はWindows PowerShell 1.0とは共存できません。最初にWindows PowerShell 1.0をアンインストールしてからインストールを行うようにしてください。
互換性
PowerShell 2.0には下位互換性があり、PowerShell 1.0用のコマンドレット、プロバイダー、スナップイン、スクリプト、関数などを使用できます。これまでPowerShell 1.0を使用してきたユーザーは、過去の資産を活用できるため、安心して移行することができます。またこれからPowerShellを使用してみようと思っている方は、PowerShell 1.0向けに書かれた多くのリソースが役に立つことでしょう。
統合開発環境
PowerShell 2.0では統合開発環境である「Windows PowerShell ISE」が標準で提供されています。専用の開発環境であり、スクリプトのキーワード色分け機能やデバッガも搭載しています。
Windows PowerShell ISEの詳細については下記の別稿を参照してください。
コマンドレット
PowerShell 1.0ではコマンドレットの数が129でしたが、PowerShell2.0では236と大幅に増えました。ここで、Get-Command
コマンドレットを使用してコマンドレットの一覧を表示してみましょう。
PS> Get-Command
PowerShell 1.0を使用したことがある方であれば気付いたと思いますが、Get-Command
の動作が変更されました。 PowerShell 1.0では Get-Command
と入力するだけで、コマンドレットの一覧を取得することができたのですが、PowerShell 2.0ではFunctionやAliasまで表示されます。
コマンドレットのみの一覧を表示させたい場合は-CommandType
パラメータにCmdlet
を指定し実行します。
PS> Get-Command -CommandType Cmdlet
このように、コマンドレットによってはPowerShell1.0と動作が異なるものもありますので注意が必要です。
リモート処理
PowerShell 2.0では1台または複数台のリモートコンピューターに対してコマンドを実行することができます。またTelnet
のようにリモートコンピューターと対話しながらコマンドを実行することもできるようになりました。リモート処理を行うコマンドレットには表2に示すものがあります。
コマンドレット | 説明 |
Enter-PSSession | リモート コンピューターと対話型のセッションを開始する |
Exit-PSSession | リモート コンピューターとの対話型のセッションを終了する |
Export-PSSession | 別のセッションからコマンドをインポートし Windows PowerShell モジュールに保存する |
Get-PSSession | 現在のセッションの Windows PowerShell セッションを取得する |
Import-PSSession | 別のセッションのコマンドを現在のセッションにインポートする |
New-PSSession | ローカル コンピューターまたはリモート コンピューターへの固定接続を作成する |
Remove-PSSession | 1 つ以上の Windows PowerShell セッションを閉じる |
また、いくつかのコマンドレットには-ComputerName
パラメータが追加されました。これにより、コンピューター名を指定してコマンドレットを実行することができます。-ComputeName
パラメータを持つコマンドレットには表3に示すものがあります。
Clear-EventLog | Connect-WSMan | Disconnect-WSMan | Enter-PSSession | Get-Counter |
Get-EventLog | Get-HotFix | Get-Process | Get-PSSession | Get-Service |
Get-WinEvent | Get-WmiObject | Get-WSManInstance | Invoke-Command | Invoke-WmiMethod |
Invoke-WSManAction | Limit-EventLog | New-EventLog | New-PSSession | New-WSManInstance |
Receive-Job | Register-WmiEvent | Remove-EventLog | Remove-PSSession | Remove-WmiObject |
Remove-WSManInstance | Restart-Computer | Set-Service | Set-WmiInstance | Set-WSManInstance |
Show-EventLog | Stop-Computer | Test-Connection | Test-WSMan | Write-EventLog |