HIRO [著] 2009/12/08 14:00

 Windows 7やWindows Server 2008 R2からOSの標準機能として搭載されることになった「PowerShell 2.0」。本連載では、PowerShell 2.0で追加された新機能についてスポットを当て、その使い方について説明していきます。今回は、新しく追加された機能の概要について説明します。

1 2 →

はじめに

 「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に示すものがあります。

表2 リモート処理用コマンドレット
コマンドレット説明
Enter-PSSessionリモート コンピューターと対話型のセッションを開始する
Exit-PSSessionリモート コンピューターとの対話型のセッションを終了する
Export-PSSession別のセッションからコマンドをインポートし Windows PowerShell モジュールに保存する
Get-PSSession現在のセッションの Windows PowerShell セッションを取得する
Import-PSSession別のセッションのコマンドを現在のセッションにインポートする
New-PSSessionローカル コンピューターまたはリモート コンピューターへの固定接続を作成する
Remove-PSSession1 つ以上の Windows PowerShell セッションを閉じる

 また、いくつかのコマンドレットには-ComputerNameパラメータが追加されました。これにより、コンピューター名を指定してコマンドレットを実行することができます。-ComputeNameパラメータを持つコマンドレットには表3に示すものがあります。

表3 ComputerNameパラメータを持つコマンドレット一覧
Clear-EventLogConnect-WSManDisconnect-WSManEnter-PSSessionGet-Counter
Get-EventLogGet-HotFixGet-ProcessGet-PSSessionGet-Service
Get-WinEventGet-WmiObjectGet-WSManInstanceInvoke-CommandInvoke-WmiMethod
Invoke-WSManActionLimit-EventLogNew-EventLogNew-PSSessionNew-WSManInstance
Receive-JobRegister-WmiEventRemove-EventLogRemove-PSSessionRemove-WmiObject
Remove-WSManInstanceRestart-ComputerSet-ServiceSet-WmiInstanceSet-WSManInstance
Show-EventLogStop-ComputerTest-ConnectionTest-WSManWrite-EventLog

1 2
→
INDEX
PowerShell 2.0の新機能(1) ――ファーストインプレッション
Page1
はじめに
対象OSとインストール
互換性
統合開発環境
コマンドレット
リモート処理
バックグラウンドジョブ
コマンドレットの作成
トランザクション処理
スクリプトデバッガー
Out-GridViewコマンドレット
イベント通知
モジュール
まとめ
プロフィール
HIRO ヒロ

HIRO's.NETのHIROです。
とある半導体工場のSEです。
VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。
最近はBlog でPowerShellについて書いています。

2008/07/07にPowerShell from Japan!!というサイトを立ち上げました。PowerShellユーザーが集まってブログを書いています。よろしかったら来てください。

HIRO's.NET Blog
HIRO's.NET - VB.NET, C#, PowerShell Tips -
PowerShell from Japan!!


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト