about_Windows_PowerShell_4.0

適用対象: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0

トピック

about_Windows_PowerShell_4.0

概要

Windows PowerShell® 4.0 に含まれている新しい機能について説明します。

詳細説明

Windows PowerShell 4.0 には、その用途を拡大し、使いやすさを向上させる重要な機能や、Windows ベースの環境をより簡単かつ包括的に制御および管理できるようにする重要な機能がいくつか含まれています。

Windows PowerShell 4.0 には下位互換性があります。Windows PowerShell 2.0 および Windows PowerShell 3.0 で設計したコマンドレット、プロバイダー、モジュール、スナップイン、スクリプト、関数、およびプロファイルは、変更なしに Windows PowerShell 4.0 で動作します。

Windows PowerShell 4.0 の変更点については、Microsoft TechNet のトピック「Windows PowerShell 4.0 の新機能」(https://go.microsoft.com/fwlink/?LinkId=307123) を参照してください。

新機能

Windows PowerShell 4.0 には、次に示す新機能があります。

Windows PowerShell

-- Windows PowerShell の Desired State Configuration (DSC) は、ソフトウェア サービスとそれらのサービスが実行される環境に対して構成データの展開と管理を実行できる Windows PowerShell の新しい管理システムです。DSC の詳細については、「about_Desired_State_Configuration」か、または Microsoft TechNet の Web サイトで「Windows PowerShell Desired State Configuration 入門」を参照してください。

-- Save-Help では、リモート コンピューターにインストールされているモジュールのヘルプを保存できるようになりました。Save-Help を使用すると、インターネットに接続されたクライアント (ヘルプが必要なモジュールのすべてがインストールされているとは限らない) でヘルプのモジュールをダウンロードし、リモート共有フォルダーまたはインターネットへのアクセスがないリモート コンピューターにヘルプをコピーして保存できます。

-- Windows PowerShell ワークフローに加え、リモート コンピューターで実行されているスクリプトをデバッグできるように、Windows PowerShell デバッガーが強化されました。Windows PowerShell コマンド ラインまたは Windows PowerShell ISE のいずれかからスクリプト レベルで Windows PowerShell ワークフローをデバッグできるようになりました。リモート セッションでスクリプトのワークフローなどの Windows PowerShell スクリプトをデバッグできるようになりました。リモート デバッグ セッションは、切断されても Windows PowerShell リモート セッション上に保存され、後で再接続されます。

-- Register-ScheduledJob および Set-ScheduledJob で RunNow パラメーターを使用できるようになり、Trigger パラメーターを使用してジョブの即時開始日時を設定する必要がなくなりました。

-- Invoke-RestMethod と Invoke-WebRequest で Headers パラメーターを使用して、すべてのヘッダーを設定できるようになりました。このパラメーターは以前から存在しますが、使用すると例外やエラーが発生する Web コマンドレットのいくつかのパラメーターの 1 つでした。

-- Get-Module に、新しいパラメーター FullyQualifiedName が追加されました (ModuleSpecification[] 型)。Get-Module の FullyQualifiedName パラメーターを使用すると、モジュールの名前、バージョン、および GUID を使用してモジュールを指定できます。

-- Windows Server 2012 R2 の既定の実行ポリシー設定は RemoteSigned です。Windows 8.1 では、既定の設定に変更はありません。

-- Windows PowerShell 4.0 以降で、動的なメソッド名を使用したメソッド呼び出しがサポートされるようになりました。変数にメソッド名を格納し、その変数を呼び出すことによって動的にメソッドを呼び出せます。

-- PSElapsedTimeoutSec ワークフロー共通パラメーターで指定したタイムアウト期間が経過したとき、非同期のワークフロー ジョブは削除されなくなりました。

-- 新しいパラメーター RepeatIndefinitely が New-JobTrigger および Set-JobTrigger コマンドレットに追加されました。これを使用すると、スケジュールされたジョブの実行を無期限に繰り返す場合に、RepetitionDuration パラメーターの TimeSpan.MaxValue 値を指定する必要がなくなります。

-- Passthru パラメーターが Enable-JobTrigger および Disable-JobTrigger コマンドレットに追加されました。Passthru パラメーターを使用すると、実行するコマンドによって作成または変更されるすべてのオブジェクトが表示されます。

-- Add-Computer および Remove-Computer コマンドレットにワークグループを指定するパラメーターの名前が一貫性のあるものになりました。どちらのコマンドレットでも、パラメーター WorkgroupName を使用します。

-- 新しい共通パラメーター PipelineVariable が追加されました。PipelineVariable を使用すると、パイプされたコマンド (またはパイプされたコマンドの一部) の結果を変数として保存し、パイプラインの残りの部分に引き渡すことができます。

-- メソッド構文を使用したコレクションのフィルター処理がサポートされるようになりました。Where() または Where-Object の構文に似た簡潔なメソッド呼び出しの形式を使用して、オブジェクトのコレクションをフィルター処理できます。次に例を示します。(Get-Process).where({$_.Name -match 'powershell'})

-- Get-Process コマンドレットに新しいスイッチ パラメーター IncludeUserName が追加されました。

-- ファイルのハッシュに関する情報を取得する新しいコマンドレット Get-FileHash が追加されました。

-- Windows PowerShell 4.0 では、モジュールが自らのマニフェストの中で DefaultCommandPrefix キーを使用している場合、またはユーザーが Prefix パラメーターを指定してモジュールをインポートした場合、モジュールの ExportedCommands プロパティにモジュール内のコマンドがプレフィックス付きで表示されます。モジュールで修飾された構文 (ModuleName\CommandName) を使用してコマンドを実行するときは、コマンド名にプレフィックスを含める必要があります。

-- $PSVersionTable.PSVersion の値が 4.0 に更新されました。

-- Where() 演算子の動作が変更されました。Collection.Where('property –match name') は、"Property –CompareOperator Value" という形式の文字列式を受け付けなくなりました。ただし、Where() 演算子は、スクリプト ブロック形式の文字列式を受け入れます。これは、引き続きサポートされます。

Windows PowerShell ワークフロー

-- System Center Orchestrator などで使用される反復パイプラインのコンテキストで、新しい PipelineVariable 共通パラメーターのサポートが追加されました。反復パイプラインとは、ストリーミングを使用することによって散発的に実行するのではなく、コマンドを単純に左から右へと実行するパイプラインです。

-- パラメーターのバインドが大幅に拡張され、Tab 補完のシナリオを越えて、たとえば、現在の実行空間に存在しないコマンドでも機能するようになりました。

-- Windows PowerShell ワークフローにカスタム コンテナー アクティビティのサポートが追加されました。アクティビティのパラメーターの型が Activity または Activity[] であるか、アクティビティのジェネリック コレクションである場合に、ユーザーが引数としてスクリプト ブロックを提供すると、Windows PowerShell ワークフローはそのスクリプト ブロックを通常の Windows PowerShell によるスクリプトからワークフローへのコンパイルと同様に XAML に変換します。

-- クラッシュの後、Windows PowerShell ワークフローは自動的に管理対象ノードに再接続します。

-- Foreach -Parallel アクティビティ ステートメントのスロットルを、ThrottleLimit プロパティを使用して調整できるようになりました。

-- ErrorAction 共通パラメーターに新しい有効値 Suspend が追加されました。これはワークフロー専用です。

-- ワークフロー エンドポイントは、アクティブなセッション、処理中のジョブ、および保留中のジョブがいずれもなくなった時点で、自動的に閉じるようになりました。この機能は、自動クローズ条件を満たしている場合に、ワークフロー サーバーとして機能しているコンピューターでリソースの節約になります。

Windows PowerShell Integrated Scripting Environment (ISE)

-- Windows PowerShell ISE は、Windows PowerShell ワークフローのデバッグとリモート スクリプトのデバッグの両方をサポートしています。

-- Windows PowerShell Desired State Configuration のプロバイダーおよび構成に IntelliSense サポートが追加されました。

Windows PowerShell の Web サービス (Management OData IIS 拡張機能)

-- コマンドレットの実行中に PSWS でエラーが発生すると、呼び出し元に詳細なエラー メッセージが返されます。さらに、エラー コードは「REST API の一般的なエラー コード (https://msdn.microsoft.com/library/windowsazure/dd179357.aspx)」に従います。

-- エンドポイントで API のバージョンを定義したり、特定の API バージョンの使用を強制したりできるようになりました。クライアントとサーバーの間でバージョンの不一致が発生すると、クライアントとサーバーの両方にエラーが表示されます。

-- ディスパッチ スキーマの管理が簡略化され、スキーマで欠落しているフィールドの値が自動的に生成されるようになりました。ディスパッチ スキーマが存在しない場合でも、生成された値は出発点として役立ちます。

-- PSWS での型の処理が改良され、既定のコンストラクターとは異なるコンストラクターを使用する型がサポートされ、Windows PowerShell での PSTypeConverter と同様の動作になりました。これにより、PSWS で複合型を使用できます。

-- PSWS で、クエリの実行中に、関連付けられているインスタンスを展開できるようになりました。

-- バイナリ コンテンツ (イメージ、オーディオ、ビデオなど) のサイズが大きくなると、転送のコストがかなり高くつくため、エンコードせずにバイナリ データを転送するほうが適切です。エンコードせずに転送する場合、PSWS では名前付きリソース ストリームを使用します。名前付きリソース ストリームは、Edm.Stream 型のエンティティのプロパティです。それぞれの名前付きリソース ストリームには、GET 操作用と UPDATE 操作用に別個の URI があります。

-- OData アクションで、リソースに対して CRUD (作成、読み取り、更新、および削除) 以外のメソッドを呼び出すメカニズムが提供されるようになりました。アクションを呼び出すには、そのアクションに対して定義された URI に HTTP POST 要求を送信します。アクションに対するパラメーターは、POST 要求の本体で定義します。

-- Azure のガイドラインと一貫性を保つため、すべての URL を単純化する必要があります。Key As Segment に組み込まれた変更により、1 つのキーでセグメントを表現できます。なお、複数のキー値を使用する参照は、これまでと同様、かっこで囲んだコンマ区切り値で表記する必要があることに注意してください。

-- PSWS の今回より前のリリースでは、作成、更新、または削除操作を実行する唯一の方法は、最上位レベルのリソースに対して Post、Put、または Delete を呼び出すことでした。今回のリリースの PSWS では、"Contained Resource" 操作という新しい機能で同じ結果を得ることができます。これを使用すると、より間接的な方法で同じリソースに到達し、それらのリソースが含まれているかのようにして処理できます。

Windows PowerShell Web Access により、Windows Server 2012 R2 に次の新機能が追加されました。

-- Web ベースの Windows PowerShell Web Access コンソールで、既存のセッションを切断および再接続できます。Web ベースのコンソールで [保存] ボタンを使用すると、削除せずにセッションを切断し、後でセッションに再接続できます。

-- サインイン ページに既定のパラメーターを表示できます。既定のパラメーターを表示するには、web.config というファイルのサインイン ページの [オプションの接続設定] 領域に表示されるすべての設定の値を構成します。web.config ファイルを使用すると、2 番目または代替の資格情報セットを除くすべてのオプションの接続設定を構成できます。

-- Windows Server 2012 R2 で、Windows PowerShell Web Access の承認規則をリモート管理できます。Add-PswaAuthorizationRule および Test-PswaAuthorizationRule コマンドレットに、管理者がリモート コンピューターから、または Windows PowerShell Web Access セッションで承認規則を管理できるようにするために Credential パラメーターが用意されました。

-- 1 つのブラウザー セッションで各セッションに対して新しいブラウザー タブを使用することにより、複数の Windows PowerShell Web Access セッションに接続できるようになりました。Web ベースの Windows PowerShell コンソールで新しいセッションに接続するとき、新しいブラウザー セッションを開く必要がなくなりました。

重要なバグ修正

次に、Windows PowerShell 4.0 に含まれているバグ修正をいくつか示します。

-- Get-Counter で、フランス語エディションの Windows で返されるカウンターに単一引用符文字を含めることができるようになりました。

-- 逆シリアル化されたオブジェクトの GetType メソッドを表示できるようになりました。

-- #Requires ステートメントにより、ユーザーは、昇格されたユーザー権限 ([管理者として実行]) でセッションを実行することを必須条件として指定できるようになりました。

-- Import-Csv コマンドレットで、ブランク行が無視されるようになりました。

-- Invoke-WebRequest コマンドの実行中に Windows PowerShell ISE が使用するメモリが多すぎるという問題が修正されました。

-- Get-Module で、Version 列にモジュールのバージョンが表示されるようになりました。

-- Remove-Item–Recurse で、想定どおりにサブフォルダーから項目が削除されるようになりました。

-- Get-Process 出力オブジェクトに UserName プロパティが追加されました。

-- Invoke-RestMethod コマンドレットがすべての使用可能な結果を返すようになりました。

-- Add-Member が、ハッシュ テーブルがまだアクセスされていない場合でも、ハッシュ テーブルに効果を与えるようになりました。

-- Select-Object –Expand が、プロパティの値が null または空の場合に、失敗したり、例外を生成したりしなくなりました。

-- Get-Process が、オブジェクトから ComputerName プロパティを取得する他のコマンドと一緒にパイプラインで使用できるようになりました。

-- ConvertTo-Json および ConvertFrom-Json が、二重引用符で囲まれた用語を受け付けるようになり、エラー メッセージがローカライズ可能になりました。

-- Get-Job が、新しいセッションでも、スケジュールされたジョブのうちすべての完了したジョブを返すようになりました。

-- Windows PowerShell で FileSystem プロバイダーを使用して VHD をマウントおよびマウント解除した場合の問題が修正されました。Windows PowerShell は、新しいドライブを、同じセッションにマウントされるときでも検出できるようになりました。

-- ScheduledJob または Workflow モジュールのジョブ タイプを操作するとき、それらのモジュールを明示的に読み込む必要がなくなりました。

-- 入れ子になったワークフローを定義するワークフローのインポート処理のパフォーマンスが改善され、高速に処理されるようになりました。

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

-- Windows PowerShell の Web サイト (https://go.microsoft.com/fwlink/?LinkID=106031)

-- Windows PowerShell チームのブログ:https://go.microsoft.com/fwlink/?LinkId=143696

-- Windows PowerShell Web Access (https://technet.microsoft.com/library/hh831611.aspx)

関連項目

about_Debuggers

about_Desired_State_Configuration

about_Scheduled_Jobs

about_Updatable_Help

Add-Computer

Disable-JobTrigger

Enable-JobTrigger

Get-Module

Get-Process

Invoke-RestMethod

New-JobTrigger

Register-ScheduledJob

Remove-Computer

Save-Help

Set-ExecutionPolicy

Set-JobTrigger

Set-ScheduledJob

Update-Help

キーワード

Windows PowerShell 4.0 の新機能