PowerShell HelpFile - about_Windows_PowerShell_2.0
 記事記号:[me1595] 初版:2011/May/10

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

トピック
    about_Windows_PowerShell_2.0

簡易説明
    Windows PowerShell 2.0 に導入された新機能について説明します。
 

詳細説明
    Windows PowerShell 2.0 には、その用途を広げ、利便性を高めると共に、Windows 
    ベースの環境をより簡単かつ総合的に管理できるようにする重要な機能が数多く導入
    されています。


    Windows PowerShell 2.0 には下位互換性があります。Windows PowerShell 1.0 用に
    設計されたコマンドレット、プロバイダー、スナップイン、スクリプト、関数、プロ
    ファイルなどは、Windows PowerShell 2.0 でも変更することなく使用できます。


新機能
    Windows PowerShell 2.0 には、次の新機能が追加されています。


  リモート処理
    
      Windows PowerShell 2.0 では、1 つの Windows PowerShell コマンドで、1 台ま
      たは何台ものリモート コンピューターにコマンドを実行できます。コマンドを 1 
      つずつ実行することはもちろん、固定接続 (セッション) を作成して、関連した一
      連のコマンドを実行することもできます。入力したコマンドが直接リモート コン
      ピューターで実行されるようにリモート コンピューターとのセッションを開始す
      ることもできます。


      Windows PowerShell のリモート処理機能は、Windows Remote Management (WinRM) 
      を基盤としています。WinRM は、WS-Management プロトコル (SOAP をベースとす
      るファイアウォール互換の標準通信プロトコル) をマイクロソフトが実装したもの
      です。


      リモート コンピューターには、Windows PowerShell 2.0、Microsoft .NET Framew
      ork 2.0、および WinRM サービスがインストールされている必要があります。リモ
      ート コマンドは、Windows PowerShell を実行できるすべてのオペレーティング 
      システムでサポートされます。現在のユーザーには、リモート コンピューターに
      対してコマンドを実行するためのアクセス許可が付与されている必要があります。
      詳細については、「about_Remote_Requirements」を参照してください。


      リモート処理をサポートするために、Invoke-Command、Enter-PSSession、Exit-PS
      Session のほか、PSSession を名詞とする各種のコマンドレットが追加されました。
      固定接続の作成と管理には、これらのコマンドレットを使用できます。


      また、Get-Process、Get-Service、Get-Eventlog など、いくつかのコマンドレッ
      トには、ComputerName パラメーターが追加されました。このパラメーターを使用
      することによって、リモート コンピューターに関する情報を取得できます。
      これらのコマンドレットは、.NET Framework のメソッドを使用して、必要なデー
      タを取得します。Windows PowerShell のリモート処理には依存していません。新
      しいプログラムや構成は不要です。詳細については、各コマンドレットのヘルプを
      参照してください。


      リモート コマンドの詳細については、「about_Remote」および「about_Remote_FA
      Q」を参照してください。セッションの詳細については、「about_PSSessions」を
      参照してください。


  Windows PowerShell ISE
    
      Windows PowerShell 2.0 には、Windows PowerShell Integrated Scripting Envir
      onment (ISE) が導入されています。このホスト アプリケーションでは、コマンド
      を実行したり、構文が色付きで表示される Unicode ベースのグラフィカルな環境
      でスクリプトの設計、記述、テスト、およびデバッグを行ったりできます。
 

      Windows PowerShell ISE を使用するには、Microsoft .NET Framework 3.0 以降が
      必要です。


      Windows PowerShell ISE は、次の要素で構成されます。

      -  コマンド ペイン: 対話型コマンドを Windows PowerShell コンソールとまった
         く同じ感覚で実行できます。コマンドを入力し、Enter キーを押すだけの簡単
         な操作で、出力ペインに出力結果が表示されます。

      -  スクリプト ペイン: 関数やスクリプトの作成、編集、デバッグ、実行を行うこ
         とができます。

      -  複数のタブ: コマンド ペインとスクリプト ペインはタブごとに存在し、複数
         の作業を個別に行うことができます。


      Windows PowerShell ISE は、初級ユーザーと上級ユーザーのどちらのニーズにも
      対応できるように設計されています。


  バックグラウンド ジョブ
    
      バックグラウンド ジョブは、非同期的に実行されるコマンドです。バックグラウ
      ンド ジョブを実行すると、ジョブの完了を待たずに、すぐにコマンド プロンプト
      に戻ります。バックグラウンド ジョブ機能を使用すると、複雑なコマンドをバッ
      クグラウンドで実行しておき、その間にセッションを他の作業に費やすことがで
      きます。


      バックグラウンド ジョブをローカル コンピューターまたはリモート コンピュー
      ターで実行し、その結果をローカル コンピューターまたはリモート コンピュータ
      ーに保存できます。ジョブをリモートから実行するには、Invoke-Command コマン
      ドレットを使用します。
    

      Windows PowerShell には、Job という名詞を含んだ一連のコマンドレット (Job 
      コマンドレット) があります。これらのコマンドレットは、バックグラウンド ジ
      ョブの作成、開始、管理、削除のほか、実行結果の取得に使用します。job コマン
      ドレットの一覧を取得するには、次のコマンドを入力します。

          get-command *-job

      
      バックグラウンド ジョブの詳細については、「about_Jobs」を参照してください。


  スクリプト デバッガー
    
      Windows PowerShell 2.0 には、スクリプトおよび関数用のコマンドレット ベース
      のデバッガーが備わっています。このデバッガーは、必要な情報がすべて開示され
      た公開 API によってサポートされており、これらの API を使用して、独自のデバ
      ッガーを構築したり、デバッガーをカスタマイズ、拡張したりすることができます。


      デバッガー コマンドレットでは、行、カラム、変数、コマンドなどにブレークポ
      イントを設定できます。これらのコマンドレットを使用して、ブレークポイントの
      管理やコール スタックの表示を行うことができます。条件付きのブレークポイン
      トを作成したり、ブレークポイントにカスタム動作 (診断やログ記録用のスクリプ
      トを実行するなど) を指定したりすることも可能です。


      ブレークポイントに到達すると、Windows PowerShell は、実行を中断して、デバ
      ッガーを起動します。デバッガーには、コードをステップ実行するための一連のカ
      スタム コマンドが用意されています。Windows PowerShell の標準的なコマンドを
      使用して変数の値を表示したり、コマンドレットを使用して結果を調査したりする
      こともできます。

      
      デバッグの詳細については、「about_Debuggers」を参照してください。


  データ セクション
    
      Windows PowerShell 2.0 用に設計されたスクリプトには、データをスクリプトの
      ロジックから分離する DATA セクションを実装することができます。新しい DATA 
      セクションのデータは、Windows PowerShell スクリプト言語の特定のサブセット
      に限定されます。


      Windows PowerShell 2.0 では、DATA セクションはスクリプトの国際化のサポート
      に使用されます。DATA セクションを使用することによって、各国のユーザー イン
      ターフェイス言語に翻訳されるユーザー メッセージ文字列を分離、識別すること
      ができます。


      詳細については、「about_Data_Sections」を参照してください。


  スクリプトの国際化
    
      Windows PowerShell 2.0 は、スクリプトの国際化対応により、世界中のユーザー
      により優れた機能を提供します。スクリプトや関数で表示するメッセージやヘルプ 
      テキストに、ユーザーに合った言語を使用できるようになりました。
 

      スクリプトの国際化機能とは、オペレーティング システムのユーザー インターフ
      ェイスのカルチャ ($PsUICulture) を実行中に照会し、対応する翻訳済みのテキス
      ト文字列をインポートすることによって、ユーザーに合った言語を表示する機能で
      す。Data セクションを使用すると、テキスト文字列を容易に識別できるようにコ
      ードから分離することができます。新しいコマンドレット ConvertFrom-StringDat
      a を使用することにより、テキスト文字列を翻訳しやすいよう、ディクショナリに
      似たハッシュ テーブルへと変換できます。
 

      詳細については、「about_Script_Internationalization」を参照してください。



  WMI コマンドレット
    
      Windows PowerShell 2.0 の Windows Management Instrumentation 
      (WMI) は、新たに次のコマンドレットが追加されるなど、機能が向上しています。

          - Remove-WmiObject
          - Set-WmiInstance
          - Invoke-WmiMethod


      Get-WmiObject コマンドレットには、新しいパラメーターが追加されました。すべ
      ての WMI コマンドレットは、次のパラメーターをサポートします。

          - EnableAllPrivileges
          - Impersonation
          - Authentication
          - Authority


      これらのパラメーターが追加されたことで、WMI に関連した操作のセキュリティ構
      成を、.NET Framework クラス ライブラリの型を直接操作することなく、従来より
      も細かく制御できるようになりました。

 
      WMI コマンドレットを一覧表示するには、次のコマンドを入力します。

          get-help *wmi*

      各コマンドレットのヘルプを取得するには、get-help に続けてコマンドレット名
      を入力します。

	
  Get-WinEvent コマンドレット
    
      Get-WinEvent は、イベント ビューアーのログや、ローカル コンピューターおよ
      びリモート コンピューター上の Windows イベント トレーシング (ETW) のイベン
      ト ログ ファイルからイベントを取得するコマンドレットです。イベントは従来の
      イベント ログから取得できるほか、Windows Vista で導入された Windows イベン
      ト ログから取得することも可能です。
 

      Get-WinEvent を使用すると、ログ内のイベント、イベント ログ プロバイダー、
      およびイベント ログを表すオブジェクトを取得できます。Get-WinEvent では、
      単一のコマンドで、異なるソースからのイベントを結合することができます。XML 
      パス言語 (XPath)、XML、およびハッシュ テーブル形式の高度なクエリがサポー
      トされています。


      Get-WinEvent には、Windows Vista または Windows Server 2008 
      (Microsoft .NET Framework 3.5 が必須) が必要です。


  Out-Gridview コマンドレット
    
      Out-GridView は、他のコマンドの結果を対話操作のしやすいテーブルで表示する
      コマンドレットです。コマンドの実行結果に対し、検索、並べ替え、グループ化、
      フィルター処理などの対話操作を行うことができます。たとえば、Get-Process、
      Get-WmiObject、Get-WinEvent、Get-Eventlog などのコマンドの結果を Out-Grid
      View に送った後、このテーブル機能を使用して、データを検証することができま
      す。

        help out-gridview -full


  Add-Type コマンドレット
    
      Add-Type コマンドレットを使用すると、他の .NET Framework 言語のソース コー
      ドから .NET Framework の型を Windows PowerShell に追加できます。
 

      Add-Type は、型の作成元となるソース コードをコンパイルし、新しい .NET Fram
      ework 型を含んだアセンブリを生成します。作成した .NET Framework 型は、.NET 
      Framework が備えている標準的なオブジェクト型と共に、Windows PowerShell の
      コマンドで使用できるようになります。


      Add-Type を使用して、アセンブリをセッションに読み込み、そのアセンブリの型を 
      Windows PowerShell で使用することもできます。


      Add-Type では、新しい .NET Framework 型を開発することだけでなく、C# ライブ
      ラリの .NET Framework 型を使用したり、Win32 API にアクセスしたりすることも
      できます。

    
      詳細については、「Add-Type」を参照してください。


  イベント通知
    
      Windows PowerShell 2.0 には、イベント通知の機能が導入されています。ユーザ
      ーは、Windows PowerShell のイベント、WMI のイベント、.NET Framework のイベ
      ントなど、各種イベントの登録とサブスクライブを行うことができます。さらに、
      管理イベントやシステム イベントをリッスンしたり、転送したりできることに加
      えて、イベントに応じた処理を実行することも可能です。


      開発者は、イベント アーキテクチャを使用して、状態変化の通知を受け取るアプ
      リケーションを作成できます。ユーザーは、各種のイベントをサブスクライブし、
      その内容に応じた処理を行うスクリプトを作成することが可能です。
   

      Windows PowerShell には、イベントの新規作成、イベントの取得とサブスクライ
      ブ、イベントの登録と登録解除、イベントの待機、イベントの削除などを行うコ
      マンドレットが用意されています。これらのコマンドレットの詳細について参照
      するには、次のコマンドを入力してください。

          get-command *-event

   
  モジュール
    
      Windows PowerShell モジュールを使用すると、Windows PowerShell のスクリプト
      を分割し、それぞれが独立して完結した、再利用可能な単位として整理することが
      できます。モジュールのコードは、それ自身のコンテキストで実行されるので、セ
      ッションのリソース (変数、関数、エイリアスなど) と競合することはありません。
      また、こうしたリソースを追加したり上書きしたりすることもありません。

    
      モジュールの作成、配布、結合、共有、再利用などを通じて、単純なスクリプトか
      ら複雑なアプリケーションまで構築することができます。


      Windows PowerShell 2.0 には、モジュールの追加、取得、削除のためのコマンド
      レットに加えて、モジュールのメンバーをエクスポートするコマンドレットが用意
      されています。モジュールに関連したコマンドレットの詳細について参照するには、
      次のコマンドを入力してください。

          get-command *-module*

 
  トランザクション
    
      Windows PowerShell 2.0 では、トランザクションがサポートされます。トランザ
      クションを使用すると、一連の操作全体を元に戻すことができます。トランザクシ
      ョンは、トランザクションをサポートする操作でのみ利用できます。トランザクシ
      ョンは、データベースやメッセージ キューイングのように、原子性、整合性、分
      離性、回復性を必要とするアプリケーションを想定して設計されています。


      トランザクションをサポートするコマンドレットおよびプロバイダーには、UseTr
      ansaction という新しいパラメーターがあります。トランザクションとして操作を
      開始するには、Start-Transaction コマンドレットを使用します。その後、操作を
      実行するコマンドレットを使用する際に、トランザクションに参加させるコマンド
      に対して UseTransaction パラメーターを指定します。このパラメーターは、コマ
      ンドレットごとに指定する必要があります。


      トランザクションのどこかで、いずれかのコマンドが失敗した場合は、Rollback-T
      ransaction コマンドレットを使用して、トランザクションのすべてのコマンドを
      取り消します。すべてのコマンドが成功した場合は、Commit-Transaction コマン
      ドレットを使用して、そのコマンドのアクションを確定します。


      Windows PowerShell 2.0 には、トランザクションの開始、使用、コミット、およ
      びロールバックのためのコマンドレットが用意されています。これらのコマンドレ
      ットについては、次のコマンドを入力してください。

          get-command *transaction*



 Windows PowerShell 1.0 との間の重要な変更点

     -- HKLM\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine における 
        PowerShellVersion のレジストリ エントリの値が 2.0 に変更されました。

     -- 新しいコマンドレットおよび変数が追加されました。この追加によって、プロフ
        ァイルやスクリプトで使用されている変数や関数との競合が生じる可能性があり
        ます。

     -- -IEQ 演算子による文字の比較では、大文字と小文字が区別されません。

     -- Get-Command コマンドレットの既定の動作では、コマンドレットだけでなく関数
        も取得されます。

     -- ユーザー インターフェイスを生成するネイティブ コマンドをパイプで Out-Hos
        t コマンドレットに渡すことはできません。

     -- Begin、Process、End、Dynamic Param といった新しい言語キーワードが、スクリ
        プトや関数で使用されている同様の単語と競合する可能性があります。これらの
        単語が言語キーワードとして解釈されることによって、構文解析エラーが発生す
        る場合があります。

     -- コマンドレット名の解決方法が変更されました。Windows PowerShell 1.0 では、
        2 つの Windows PowerShell スナップインから同じ名前のコマンドレットがエク
        スポートされた場合、実行時エラーが発生します。Windows PowerShell 2.0 で
        このコマンド名を入力すると、セッションに最後に追加されたコマンドレットが
        実行されます。既定では実行されないコマンドを実行するには、コマンドレット
        名を、生成元のスナップイン名またはモジュール名で修飾します。

     -- 関数名の後に '-?' を指定すると、対応するヘルプ トピックが表示されます (
        その関数にヘルプ トピックが含まれている場合)。

    --  Microsoft .NET Framework  のメソッドのパラメーターの解決方法が変更されま
        した。Windows PowerShell 1.0 では、オーバーロードが定義されている .NET 
        メソッドを呼び出した結果、構文上最も適合するメソッドが複数見つかっても、
        エラーが報告されませんでした。Windows PowerShell 2.0 では、あいまいさを
        指摘するエラーが報告されます。

        また、Windows PowerShell 2.0 では、構文上最も適合するメソッドを選択する
        ためのアルゴリズムが大幅に見直され、複数の候補が見つかる可能性は最小限
        に抑えられています。

     -- パイプラインでコレクションを列挙し、パイプラインでそのコレクションを変更
        しようとすると、Windows PowerShell から例外がスローされます。
    
        たとえば、次のコマンドは Windows PowerShell 1.0 では正常に動作しますが、
        Windows PowerShel 2.0 では、パイプラインの最初の反復処理でエラーになりま
        す。

            $h = @{Name="Hello"; Value="Test"}
            $h.keys | foreach-object {$h.remove($_)}

        このエラーを防ぐには、$() 文字を使用して、列挙子のサブ式を作成します。次
        にその例を示します。

	    $($h.keys) | foreach-object {$h.remove($_)}

 

    Windows PowerShell 2.0 の詳細については、次の Web サイトを参照してください。

    -- Windows PowerShell Web サイト (英語ページの可能性があります) 
       http://go.microsoft.com/fwlink/?LinkID=106031

    -- Windows PowerShell チーム ブログ (英語)
       http://go.microsoft.com/fwlink/?LinkId=143696


関連項目
    about_Data_Sections
    about_Debuggers
    about_Functions_Advanced
    about_Jobs
    about_Join
    about_PSSessions
    about_Remote
    about_Script_Internationalization
    about_Split
    	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、HelpFile、about_Windows_PowerShell_2.0
ご利用数: 1912624
感想・要望・問い合わせは こちら