次の方法で共有


Windows PowerShell 5.0の新機能

Windows PowerShell 5.0には、利用を拡張し、使いやすさを向上させ、Windowsベースの環境をより簡単かつ包括的に制御・管理できる重要な新機能が含まれています。

Windows PowerShell 5.0は後方互換性があります。 Windows PowerShell 4.0、Windows PowerShell 3.0、Windows PowerShell 2.0向けに設計されたコマンドレット、プロバイダー、モジュール、スナップイン、スクリプト、関数、プロファイルは、通常Windows PowerShell 5.0で変更なしで動作します。

Windows PowerShellのインストール

Windows PowerShell 5.0は、Windows Server 2016 Technical PreviewおよびWindows 10にデフォルトでインストールされています。

Windows Server 2012 R2、Windows 8.1 Enterprise、またはWindows 8.1 ProにWindows PowerShell 5.0をインストールするには、 Windows Management Framework 5.0をダウンロードしてインストールしてください。 Windows Management Framework 5.0をインストールする前に、ダウンロードの詳細を必ず読み、すべてのシステム要件を満たしてください。

このトピックの内容

2014年11月のWindows PowerShell 4.0アップデート ロールアップ(KB 3000850)

Windows PowerShell 4.0におけるWindows PowerShell Desired State Configuration(DSC)の多くのアップデートや改善は、 2014年11月のWindows RT 8.1、Windows 8.1、Windows Server 2012 R2 (KB3000850)のアップデートロールアップで利用可能です。 WindowsのPowerShellで Get-Hotfix -Id KB3000850 を実行することで、KB3000850がインストールされているかどうかを判断できます。

  • PSDesiredStateConfigurationモジュール内の既存のコマンドレットの更新

  • PSDesiredStateConfiguration モジュールの新しいコマンドレット

  • 言語強化

    • DependsOnは現在、コンポジットリソースをサポートしています。
    • DependsOnは現在、リソースインスタンス名に数字を割り当てることをサポートしています。
    • 空に評価されるノード式はエラーを投げなくなります。
    • ノード式が空に評価された場合に発生するエラーが修正されました。
    • 構成を呼び出す設定は、Windows PowerShellコンソール上で動作します。
  • プルモードの強化

    • プルモードはすべてのZIPファイルをサポートするようになりました。
    • AllowModuleOverwriteは 正しく動作します。
  • レジリエンスの改善

    • 新しい DebugModeでは リソースモジュールを再ロードできます。
    • 設定失敗が発生した場合、pending.mof ファイルは削除されません。
    • ローカル構成マネージャー(LCM)は、メタ設定が破損した場合でもより強靭に対応できるようになりました。
  • 診断の向上

    • LCMがタイマーの設定を指定と異なる設定にすると警告が表示されます。
    • エラーログファイルにはWindowsのPowerShellリソースのコールスタックが含まれています。
  • 柔軟性の向上

    • LocalConfigurationManagerリソースには新しいプロパティ「 ActionAfterReboot」があります。
      • ContinueConfiguration(デフォルト値):ターゲットノードが再起動すると自動的に設定を再開します。
      • StopConfiguration:ノードが再起動した後に自動的に設定を再開しないでください。
    • 一貫性実行はPULL操作よりも頻繁に実行されるようになったり、その逆も可能です。
    • バージョン管理のサポート:DSCは新しいクライアント( WMF 5.0に含む)で生成された文書を認識できるようになりました。
  • エラー防止の改善

    • モジュールバージョンは設定を適用する前に強制されます。
    • DebugPreference はGet、Set、または Test-TargetResource コールに対して正しく設定されました。
  • 資格情報処理の改善

    • 証明書PSDscAllowPlainTextPasswordの両方が指定されている場合、証明書が使用されます。
    • Get-TargetResourceであっても認証情報は復号されています。
    • メタ構成の認証情報は暗号化と復号されています。
    • PSCredentialは埋め込みオブジェクト内にあるときに復号されます。
  • 組み込みリソース改善

    • パッケージリソース
      • ローカルやウェブソースから間違ったパッケージをインストールすることもなくなりました。
      • 現在はHTTPSをサポートしています。
    • 現在、 パッケージリソースでHTTPSのサポートが実現しました。
    • アーカイブリソース は認証情報をサポートしました。

Windows PowerShell 5.0の新機能

Windows PowerShellの新機能

  • Windows PowerShell 5.0からは、クラス、形式構文、意味論を他のオブジェクト指向プログラミング言語と類似して開発できます。 クラスEnum、その他のキーワードがWindowsのPowerShell言語に追加され、新機能をサポートするようになりました。 クラスの作業についての詳細は、 about_Classesを参照してください。

  • Windows PowerShell 5.0は、スクリプトとその呼び出し元(またはホスティング環境)間で構造化データを送信するための新しい構造化情報ストリームを導入しました。 Write-Host を使って情報ストリームに出力を送ることができます。 情報ストリームはPowerShell.Streams、ジョブ、スケジュールされたジョブ、ワークフローにも対応可能です。 以下の機能は情報ストリームをサポートしています。

    • Windows PowerShellがコマンドの情報ストリームデータをどのように扱うかを指定できる新しい Write-Information コマンドレットです。 Write-Host はWrite-Informationのラッパーです。 Write-Information はサポートされたワークフロー活動でもあります。
    • InformationVariableとInformationActionという2つの新しい共通パラメータは、コマンドからの情報ストリームの表示方法を決定できます。 InformationActionの有効な値は、SilentlyContinue、Stop、Continue、Inquire、Ignore、またはSuspendであり、デフォルトはSilentlyContinueです。 InformationVariableは、コマンドの Write-Host データを保存したい変数の名前として文字列を指定します。
    • 新しいプリファレンス変数InformationPreferenceは、Windows PowerShellセッションにおける情報ストリームデータのデフォルト優先を指定します。 デフォルト値はSilentlyContinueです。
    • 新しいワークフロー共通パラメータとして、PSInformationとInformationActionが追加されました。
    • Format-Table コマンドを使うと、テーブルの列はストリームを通過する最初の300msのデータを自動的に評価してフォーマットされます。
  • Microsoft Researchとの協力により、新しいコマンドレット「ConvertFrom-String」が追加されました。 ConvertFrom-String はテキスト文字列の内容から構造化されたオブジェクトを抽出・解析することができます。 詳細については、ConvertFrom-Stringをご覧ください。

  • 新しい Convert-String コマンドレットは、-Example パラメータで示した例に基づいて自動的にテキストをフォーマットします。

  • 新しいモジュールであるMicrosoft.PowerShell.Archiveには、ファイルやフォルダをアーカイブ(ZIPファイルとも呼ばれる)に圧縮したり、既存のZIPファイルからファイルを抽出したり、ZIPファイルを圧縮した新しいバージョンで更新したりできるコマンドレットが含まれています。

  • 新しいモジュール「PackageManagement」では、インターネット上でソフトウェアパッケージを発見しインストールすることができます。 PackageManagement(旧称OneGet)モジュールは、既存のパッケージマネージャー(パッケージプロバイダーとも呼ばれる)を管理または多重化し、Windowsパッケージ管理を単一のWindows PowerShellインターフェースで統合するためのものです。

  • 新しいモジュールであるPowerShellGetは、 PowerShellギャラリーや Register-PSRepository コマンドレットを実行することで設定できる内部モジュールリポジトリ上でモジュールやDSCリソースを見つけ、インストール、公開、更新できるようにします。

  • 新しい言語キーワード「 Hidden」が追加され、メンバー(プロパティやメソッド)がデフォルトで結果に表示されないことを指定しています(-Force パラメータを追加しない限り Get-Member)。 隠されたプロパティやメソッドも、メンバーが見えるべきコンテキストでない限り、IntelliSenseの結果には表示されません。例えば、自動変数$Thisはクラスメソッド内で隠されたメンバーを表示するべきです。

  • 新設項目、削除項目、Get-ChildItem は 、シンボルリンクの作成と管理をサポートするために強化されました。 New-Item の -ItemType パラメータは新しい値、 SymbolicLinkを受け入れます。 今では New-Item コマンドレットを実行することで、1行でシンボリックリンクを作成できます。

  • Get-ChildItem には新しい -Depth パラメータがあり、-Recurse パラメータと組み合わせて再帰を制限します。 例えば、Get-ChildItem -Recurse -Depth 2は現在のフォルダ、現在のフォルダ内のすべての子フォルダ、そして子フォルダ内のすべてのフォルダの結果を返します。

  • Copy-Item では、あるWindowsのPowerShellセッションから別のセッションへファイルやフォルダをコピーできるようになり、リモートコンピュータに接続されているセッション(Nano Serverを実行しているため他のインターフェースがないコンピュータも含む)にファイルをコピーできるようになりました。 ファイルをコピーするには、新しい -FromSession と -ToSession パラメータの価値としてPSSession IDを指定し、それぞれ元の経路と宛先を指定するために -Path と -Destination を加えます。 例えば、Copy-Item -Path c:\myFile.txt -ToSession $s -Destination d:\destinationFolder です。

  • WindowsのPowerShell文字起こしは、コンソールホスト(powershell.exe)に加え、Windows PowerShell ISEなどのすべてのホスティングアプリケーションに適用されるよう改良されました。 トランスクリプトオプション(システム全体のトランスクリプトの有効化を含む)は、管理テンプレート/Windowsコンポーネント/Windows PowerShellにある 「PowerShellトランスクリプト グループポリシーを有効にする」設定を有効にすることで設定できます。

  • 新しい詳細なスクリプトトレーシング機能により、システム上でWindowsPowerShellスクリプトの使用を詳細に追跡・分析できるようになります。 詳細なスクリプトトレーシングを有効にした後、Windows PowerShellはすべてのスクリプトブロックをEvent Tracing for Windows(ETW)イベントログ( Microsoft-Windows-PowerShell/Operational)にログします。

  • Windows PowerShell 5.0からは、新しい暗号メッセージ構文コマンドレットが、IETF標準フォーマットを用いた暗号情報の暗号化と復号をサポートし、 RFC5652で文書化されたメッセージを暗号的に保護します。 Get-CmsMessage、Protect-CmsMessage、Unprotect-CmsMessage コマンドレットが Microsoft.PowerShell.Security モジュールに追加されました。

  • Microsoft.PowerShell.Utilityモジュール内の新しいコマンドレット、Get-Runspace、Debug-RunspaceDebug、Enable-RunspaceDebug、Disable-RunspaceDebugは、ランスペースのデバッグオプションを設定し、ランスペースでのデバッグの開始・停止を可能にします。 任意のランスペース(つまり、Windows PowerShellコンソールやWindows PowerShell ISEセッションのデフォルトランスペースでないランスペース)をデバッグする場合、Windows PowerShellはスクリプト内でブレークポイントを設定し、デバッガーを接続して実行スペーススクリプトをデバッグできるまでスクリプトの実行を停止させるブレークポイントを追加しています。 任意のランスペースに対するネストされたデバッグサポートが、Windows PowerShellスクリプトのランスペースデバッガーに追加されました。

  • Microsoft.PowerShell.Utilityモジュールに新しい Format-Hex コマンドレットが追加されました。 Format-Hex はテキストやバイナリデータを16進形式で閲覧できます。

  • Microsoft.PowerShell.Utilityモジュールには Get-Clipboard および Set-Clipboard コマンドレットが追加されました。これらはWindows PowerShellセッションへのコンテンツ転送を容易にします。 クリップボードコマンドレットは画像、音声ファイル、ファイルリスト、テキストをサポートします。

  • 新しいコマンドレット「Clear-RecycleBin」が Microsoft.PowerShell.Management モジュールに追加されました。このコマンドレットは、外付けドライブを含む固定ドライブのためにリサイクルビンを空にします。 デフォルトでは、コマンドレットのConfirmImpactプロパティがConfirmImpact.Highに設定されているため、Clear-RecycleBin コマンドの確認を促されます。

  • 新しいコマンドレット「New-TemporaryFile」は、スクリプトの一環として一時的なファイルを作成できます。 デフォルトでは、新しい一時ファイルは C:\Users\<user name>\AppData\Local\Tempで作成されます。

  • Out-File、Add-Content、Set-Content コマンドレットには新しい -NoNewline パラメータが加わり、出力の後に新しい行が省略されます。

  • New-Guid コマンドレットは.NET Framework Guidクラスを活用してGUIDを生成しており、スクリプトやDSCリソースを書く際に便利です。

  • ファイルのバージョン情報は誤解を招く可能性があるため、特にファイルがパッチされた後は、FileInfoオブジェクトに対して新しいFileVersionRawおよびProductVersionRawスクリプトプロパティが利用可能です。 例えば、powershell.exeのプロパティの値を表示するために、以下のコマンドを実行することができます。ここで$pidはWindows PowerShellの実行中のセッションのプロセスIDです。 Get-Process -Id $pid -FileVersionInfo | Format-List *version* -Force

  • 新しいコマンドレット Enter-PSHostProcess と Exit-PSHostProcess では、WindowsのPowerShellスクリプトをWindowsのPowerShellコンソールで動作している現在のプロセスとは別のプロセスでデバッグできます。 Enter-PSHostProcess を実行して特定のプロセスIDを入力またはアタッチし、その後 Get-Runspace を実行してプロセス内のアクティブなランスペースを返します。 スクリプトをデバッグし終えたら、プロセスからデタッチダウンするために Exit-PSHostProcess を実行してください。

  • Microsoft.PowerShell.Utilityモジュールに新しい Wait-Debugger コマンドレットが追加されました。 次の文を実行する前にデバッガでスクリプトを停止させる Wait-Debugger を実行することができます。

  • Windows PowerShellワークフローデバッガはコマンド補完やタブ補完をサポートし、ネストされたワークフロー関数のデバッグも可能です。 Ctrl+Breakを押すことで、実行中のスクリプト、ローカル・リモートセッション、ワークフロースクリプトでデバッガを入力できます。

  • Microsoft.PowerShell.Core モジュールには、Windows PowerShell Workflow、バックグラウンド、リモートセッションで実行されるジョブの実行中のジョブスクリプトをデバッグするための Debug-Job コマンドレットが追加されました。

  • Windows PowerShellジョブ用に新たにAtBreakpointという状態が追加されました。 AtBreakpointの状態は、ジョブが設定ブレークポイントを含むスクリプトを実行し、スクリプトがブレークポイントに達したときに適用されます。 ジョブがデバッグブレークポイントで停止した場合、Debug-Job コマンドレットを実行してデバッグしなければなりません。

  • Windows PowerShell 5.0は、同じフォルダ内に複数のバージョンのWindows PowerShellモジュールを同時に管理できるサポートを$PSModulePath実装しています。 ModuleSpecificationクラスにはRequiredVersionプロパティが追加され、モジュールの望ましいバージョンを得るのに役立ちます。この性質はModuleVersionプロパティとは相反します。 RequiredVersionは、Get-Module、Import-Module、Remove-Module コマンドレットのFullyQualifiedNameパラメータの値の一部としてサポートされています。

  • モジュールバージョンの検証は Test-ModuleManifest コマンドレットを実行することで可能です。

  • Get-Command コマンドレットの結果にはバージョン列が表示されます。CommandInfoクラスに新しいバージョンプロパティが追加されました。 Get-Command は同じモジュールの複数のバージョンからのコマンドを表示します。 バージョンプロパティはCmdletInfoの派生クラス(CmdletInfoやApplicationInfo)にも含まれています。

  • Get-Command 新しいパラメータ「-ShowCommandInfo」があり、ShowCommand情報をPSObjectとして返します。 これは特にWindows PowerShell ISEで Show-Command をWindowsのPowerShellリモートで実行する場合に有用です。 -ShowCommandInfo パラメータはMicrosoft.PowerShell.Utilityモジュール内の既存の Get-SerializedCommand 関数を置き換えますが、Get-SerializedCommand スクリプトはダウンレベルスクリプトのサポートとして依然として利用可能です。

  • 新しい Get-ItemPropertyValue コマンドレットでは、ドット表記を使わずにプロパティの値を算出できます。 例えば、古いWindows PowerShellのバージョンでは、PowerShellEngineレジストリキーのApplication Baseプロパティの値を取得するために以下のコマンドを実行することができます: (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name ApplicationBase)。ApplicationBase。 Windows PowerShell 5.0からは、 HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngineGet-ItemPropertyValue -Path ApplicationBase -Name 実行できます。

  • Windows PowerShellコンソールは現在、Windows PowerShell ISEと同様に構文色付けを使用しています。

  • 新しいNetworkSwitchモジュールには、Windows Server 2012 R2ロゴ認証ネットワークスイッチにスイッチ、仮想LAN(VLAN)、基本的なレイヤー2ネットワークスイッチポート設定を適用できるコマンドレットが含まれています。

  • FullyQualifiedNameパラメータは、複数のモジュールの複数バージョンを保存するために Import-Module および Remove-Module コマンドレットに追加されました。

  • Save-Help、Update-Help、Import-PSSession、Export-PSSession、Get-Command には新しいパラメータ FullQualifiedModule が ModuleSpecification 型を持ちます。 このパラメータを加えて、モジュールを完全修飾名で指定します。

  • $PSVersionTable.PSVersionの値は5.0に更新されました。

  • WMF 5.0(PowerShell 5.0)には Pester モジュールが含まれています。 PesterはPowerShell向けのユニットテストフレームワークです。 スクリプトのテストを作成できる使いやすいキーワードがいくつか用意されています。

Windows PowerShell Desired State Configuration の新機能

  • Windows PowerShell言語の強化では、クラスを使ってWindows PowerShellの望ましい状態構成(DSC)リソースを定義できます。 Import-DscResource は現在、真の動的キーワードとなっています。Windows PowerShellは指定されたモジュールのルートモジュールを解析し、DscResource属性を含むクラスを検索します。 クラスを使ってDSCリソースを定義できるようになり、モジュールフォルダ内のMOFファイルやDSCResourceサブフォルダは不要です。 Windows PowerShellモジュールファイルには複数のDSCリソースクラスを含めることができます。
  • PSDesiredStateConfigurationモジュールの以下のコマンドレットに新しいパラメータ「ThrottleLimit」が追加されました。 ThrottleLimitパラメータを追加して、同時にコマンドを動作させるターゲットコンピュータやデバイスの数を指定します。
    • Get-DscConfiguration
    • Get-DscConfigurationStatus
    • Get-DscLocalConfigurationManager
    • Restore-DscConfiguration
    • Test-DscConfiguration
    • Compare-DscConfiguration
    • Publish-DscConfiguration
    • Set-DscLocalConfigurationManager
    • Start-DscConfiguration
    • Update-DscConfiguration
  • 集中型DSCエラー報告により、豊富なエラー情報がイベントログに記録されるだけでなく、後で分析のために中央の場所に送ることができます。 この中央の場所を使って、環境内の任意のサーバーで発生したDSCの設定エラーを保存できます。 メタ設定でレポートサーバーが定義された後、すべてのエラーはレポートサーバーに送信され、データベースに保存されます。 この機能は、ターゲットノードがプルサーバーから設定をプルするよう設定されているかどうかに関わらず設定可能です。
  • Windows PowerShell ISE の改善により、DSC リソース作成が容易になりました。 これから次のことができます。
    • 構成またはノードブロック内のすべてのDSCリソースを、ブロック内の空欄にCtrl+Spaceを入力して一覧表示します。
    • 型のリソースプロパティを自動的に補完します。
    • 構成内の他のリソースインスタンスに基づくDSCリソースの DependsOn プロパティの自動完了。
    • リソースプロパティ値のタブ補完の改善。
  • ユーザーはノードブロックに PSDscRunAsCredential 属性を追加することで、指定された資格情報セットでリソースを実行できます。 例えば、PSDscRunAsCredential = Get-Credential Contoso\DscUser。 この機能は、Windowsインストーラーや実行可能なインストーラーを実行する構成の作成、ユーザーごとのレジストリハイブへのアクセス、または現在のユーザーコンテキスト外の他のタスクを実行する際に有用です。
  • Configurationキーワードには32ビット(x86ベース)のサポートが追加されました。
  • Windows PowerShellは現在、生成された構成関数に[CmdletBinding()] を追加することで定義されるDSC構成のカスタムヘルプをサポートしています。
  • 新しい DscLocalConfigurationManager 属性は、構成ブロックをメタ構成として指定し、DSCローカル構成マネージャーの設定に使用されます。 この属性により、DSCローカル構成マネージャーを構成する項目のみが構成対象に制限されます。 処理中、この構成は*.meta.mofファイルを生成し、Set-DscLocalConfigurationManager コマンドレットを実行して適切なターゲットノードに送信します。
  • Windows PowerShell 5.0では部分的な設定が許可されました。 ノードに対して設定ドキュメントをフラグメント単位で配信できます。 ノードが複数の構成文書の断片を受け取るには、まずノードのローカル構成マネージャーが期待される断片を指定するように設定しなければなりません
  • クロスコンピュータ同期はWindows PowerShell 5.0のDSCで新たに導入されました。 内蔵のWaitFor*リソース(WaitForAllWaitForAnyWaitForSome)を使い、外部オーケストレーションなしで設定実行中にコンピュータ間で依存関係を指定できるようになりました。 これらのリソースは、WS-Man プロトコル上のCIM接続を用いてノード間同期を提供します。 構成は別のコンピュータの特定のリソース状態が変わるのを待つことができます。
  • Just Enough Administration(JEA)は、新しい委任セキュリティ機能であり、DSCとWindows PowerShellで制約されたランスペースを活用し、従業員による意図的・無意識のデータを侵害する企業を守ります。 JEAの詳細やxJEA DSCリソースのダウンロード方法については、「 Just Enough Administration」をご覧ください。
  • 以下の新しいコマンドレットがPSDesiredStateConfigurationモジュールに追加されました。
    • 新しい Get-DscConfigurationStatus コマンドレットは、ターゲットノードから構成状態に関する高水準情報を受け取ります。 最後の構成やすべての構成の状態を取得できます。
    • 新しい Compare-DscConfiguration コマンドレットは、指定された構成と1つ以上のターゲットノードの実際の状態を比較します。
    • 新しい Publish-DscConfiguration コマンドレットは設定MOFファイルをターゲットノードにコピーしますが、その設定は適用しません。 この構成は次の一貫性パスの際に適用されるか、Update-DscConfiguration コマンドレットを実行するときに適用されます。
    • 新しい Test-DscConfiguration コマンドレットでは、結果として得られる構成が望ましい構成に合致しているかを検証できます。設定が望ましい構成に合致する場合はTrue、実際の構成が望まない設定ならFalseを返します。
    • 新しい Update-DscConfiguration コマンドレットは設定の処理を強制します。 ローカル構成マネージャーがプルモードの場合、コマンドレットはプルサーバーから設定を取得してから適用します。

Windows PowerShell ISEの新機能

  • リモートのWindowsのPowerShellスクリプトやファイルを、Windows PowerShell ISEのローカルコピーで編集できます。編集したいファイルを保存しているコンピュータでリモートセッションを Enter-PSSession 実行し、リモートコンピュータ 上でPSEdit <パスとファイル名>を実行することです。 この機能は、Windows PowerShell ISEが動作しないWindows ServerのServer Coreインストールオプションに保存されているWindowsのPowerShellファイルの編集を容易にします。
  • Start-Transcript コマンドレットは現在、Windows PowerShell ISEでサポートされています。
  • Windows PowerShell ISEでリモートスクリプトのデバッグができるようになりました。
  • 新しいメニューコマンド「 Break All」(Ctrl +B)は、ローカルおよびリモート実行のスクリプトの両方でデバッガに侵入します。

Windows PowerShell Web Servicesの新機能(Management OData IIS拡張)

  • Windows PowerShell 5.0からは、新しい Microsoft.PowerShell.OdataUtils モジュールにある Export-ODataEndpointProxy コマンドレットを実行することで、特定のODataエンドポイントが公開する機能に基づいてWindows PowerShellコマンドレットのセットを生成できます。

Windows PowerShell 5.0における注目すべきバグ修正

  • Windows PowerShell 5.0には新しいCOM実装が含まれており、COMオブジェクトを扱う際に大幅なパフォーマンス向上をもたらします。
  • Windows PowerShellセッションの最初のタブ完了に大幅なパフォーマンス向上が施され、タブの完了時間が約500ms短縮されました。

Windows PowerShell 4.0の新機能

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

Windows PowerShell 4.0は、Windows 8.1およびWindows Server 2012 R2にデフォルトでインストールされています。 Windows PowerShell 4.0をWindows 7(SP1付き)またはWindows Server 2008 R2にインストールするには、Windows Management Framework 4.0をダウンロードしてインストールしてください。 Windows Management Framework 4.0をインストールする前に、ダウンロードの詳細を必ず読み、すべてのシステム要件を満たしてください。

Windows PowerShell 4.0には以下の新機能が含まれています。

Windows PowerShellの新機能

  • Windows PowerShell Desired State Configuration (DSC)は、Windows PowerShell 4.0の新しい管理システムであり、ソフトウェアサービスおよびそれらのサービスが動作する環境の構成データの展開と管理を可能にします。 DSCの詳細については、「 Windows PowerShell Desired State Configurationで始めましょう」をご覧ください。
  • Save-Help は、リモートコンピュータにインストールされたモジュールのためにヘルプを保存できるようになっています。 Save-Help を使って、インターネットに接続されたクライアントからモジュールHelpをダウンロードできます(必ずしもすべてのモジュールがインストールされているわけではありません)。そして保存したヘルプをリモートの共有フォルダやインターネット接続のないリモートコンピュータにコピーできます。
  • Windows PowerShellデバッガは、Windows PowerShellワークフローやリモートコンピュータ上で動作するスクリプトのデバッグが可能になるよう強化されました。 Windows PowerShellのワークフローは、Windows PowerShellコマンドラインまたはWindows PowerShell ISEのいずれかからスクリプトレベルでデバッグできるようになりました。 Windows PowerShellスクリプトやスクリプトワークフローは、リモートセッション上でデバッグ可能になりました。 リモートデバッグセッションは、切断された後に再接続されたWindows PowerShellのリモートセッション上で保存されます。
  • Register-ScheduledJobおよびSet-ScheduledJobRunNowパラメータを導入することで、Triggerパラメータを使ってジョブの即時開始日と時刻を設定する必要がなくなります。
  • Invoke-RestMethodInvoke-WebRequest は、Headersパラメータを使ってすべてのヘッダーを設定できるようになりました。 このパラメータは常に存在していましたが、例外やエラーを引き起こすウェブコマンドレットのパラメータの一つでした。
  • Get-Moduleには 新しいパラメータ FullyQualifiedName( ModuleSpecification[]型)が加わりました。 Get-Module の FullyQualifiedName パラメータにより、モジュール名、バージョン、そしてオプションでGUIDを使ってモジュールを指定できます。
  • Windows Server 2012 R2のデフォルトの実行ポリシー設定は RemoteSignedです。 Windows 8.1ではデフォルト設定に変更はありません。
  • Windows PowerShell 4.0以降は、動的メソッド名を用いたメソッド呼び出しがサポートされています。 変数を使ってメソッド名を保存し、その変数を呼び出して動的にメソッドを呼び出すことができます。
  • 非同期ワークフロージョブは 、PSElapsedTimeoutSec のワークフロー共通パラメータで指定されたタイムアウト期間が経過すると削除されません。
  • New-JobTriggerおよびSet-JobTriggerコマンドレットに新しいパラメータ「RepeatIndefinitely」が追加されました。 これにより、スケジュールされたジョブを無期限に繰り返し実行するために、RepetitionDurationパラメータのTimeSpan.MaxValue値を指定する必要がなくなります。
  • Enable-JobTriggerおよびDisable-JobTriggerのコマンドレットにはパススルーパラメータが追加されました。 Passthruパラメータは、あなたのコマンドで作成または修正されたオブジェクトを表示します。
  • Add-ComputerおよびRemove-Computerコマンドレットでワークグループを指定するパラメータ名は一貫しています。 両方のコマンドレットは現在、 パラメータWorkgroupNameを使用しています。
  • 新しい共通パラメータである PipelineVariableが追加されました。 PipelineVariableは、パイプされたコマンド(またはその一部)の結果を変数として保存し、パイプラインの残りの部分に渡すことができます。
  • メソッド構文を用いたコレクションフィルタリングもサポートされています。 これにより、Where()やWhere-Objectのようにメソッド呼び出しとしてフォーマットされた簡略化された構文でオブジェクトの集合をフィルタリングできるようになりました。 以下は例です:(Get-Process).where({$_.名前 -match 'powershell}})
  • Get-Process コマンドレットには新しいスイッチパラメータ IncludeUserName があります。
  • 指定されたファイルに対して複数の形式のいずれかでファイルハッシュを返す新しいコマンドレット「 Get-FileHash」が追加されました。
  • Windows PowerShell 4.0では、モジュールがマニフェストで DefaultCommandPrefix キーを使用している場合、またはユーザーが Prefix パラメータを持つモジュールをインポートした場合、モジュールの ExportedCommands プロパティにプレフィックス付きのコマンドが表示されます。 module-qualified syntax(モジュール名\CommandName)を使ってコマンドを実行する場合、コマンド名には必ずプレフィックスを含める必要があります。
  • $PSVersionTable.PSVersionの値は4.0に更新されました。
  • ここで() オペレーターの挙動が変化しました。 Collection.Where('property -match name') 文字列式を "Property -CompareOperator Value" 形式で受け入れることはもはやサポートされていません。 しかし、 Where() 演算子はスクリプトブロック形式の文字列表現を受け入れます。これは今でもサポートされています。

Windows PowerShell統合スクリプト環境(ISE)の新機能

  • Windows PowerShell ISEはWindows PowerShellワークフローデバッグとリモートスクリプトデバッグの両方をサポートしています。
  • Windows PowerShell Desired State Configuration のプロバイダーおよび構成に IntelliSense サポートが追加されました。

Windows PowerShellワークフローの新機能

  • System Center Orchestratorのような反復パイプラインの文脈で、新しい PipelineVariable 共通パラメータのサポートが追加されました。つまり、ストリーミングを使った間隔のランニングではなく、単に左から右にコマンドを実行するパイプラインです。
  • パラメータバインディングは、現在のランスペースに存在しないコマンドなど、タブ補完のシナリオ外でも動作するよう大幅に強化されました。
  • カスタムコンテナアクティビティのサポートがWindows PowerShell Workflowに追加されました。 アクティビティパラメータが ActivityActivity[] 型(または一般的なアクティビティの集合)で、ユーザーがスクリプトブロックを引数として提供した場合、Windows PowerShell Workflowは通常のWindows PowerShellスクリプトからワークフローへのコンパイルと同様に、そのスクリプトブロックをXAMLに変換します。
  • クラッシュ後、Windows PowerShell Workflowは自動的に管理ノードに再接続します。
  • ThrottleLimitプロパティを使ってForeach -Parallelのアクティビティ文をスロットルできます。
  • ErrorActionの共通パラメータには、ワークフロー専用の新しい有効な値「Suspend」が割り当てられています。
  • 現在、ワークフローエンドポイントは、アクティブなセッションがなければ、進行中のジョブがなければ、保留中のジョブもない場合に自動的にクローズされます。 この機能は、自動クロージング条件が満たされた際にワークフローサーバーとして機能するコンピュータのリソースを節約します。

Windows PowerShell Web Servicesの新機能

  • コマンドレットが実行中のWindows PowerShell Web Services(PSWS、Management OData IIS Extensionとも呼ばれる)でエラーが発生した場合、より詳細なエラーメッセージが呼び出し元に返されます。 さらに、エラーコードは Windows Azure REST APIのエラーコードガイドラインに従っています。
  • エンドポイントはAPIバージョンを定義し、特定のAPIバージョンの使用を強制することも可能です。 クライアントとサーバー間でバージョンの不一致が発生すると、エラーがクライアントとサーバーの両方に表示されます。
  • ディスパッチスキーマの管理は、スキーマ内の欠落フィールドに対して自動的に値を生成することで簡素化されました。 生成は、ディスパッチスキーマが存在しなくても、有用な出発点として行われます。
  • PSWSの型取り扱いは、Windows PowerShellの PSTypeConverter に似た動作をすることで、デフォルトのコンストラクタとは異なるコンストラクタを使用するタイプをサポートするように改良されました。 これにより、複雑な型をPSWSで使うことができます。
  • PSWSはクエリを実行しながら関連するインスタンスを拡張することを可能にします。 画像、音声、動画などの大きなバイナリコンテンツの場合、転送コストが大きく、エンコードせずにバイナリデータを転送する方が良いです。 PSWSはエンコーディングなしで転送するために名前付きリソースストリームを使用します。 名前付きリソースストリームは 、Edm.Stream タイプのエンティティのプロパティです。 各名前付きリソースストリームには、GETまたはUPDATE操作用の別々のURIがあります。
  • ODataアクションは、リソースに対して非CRUD(作成、読み取り、更新、削除)メソッドを呼び出す仕組みを提供します。 アクションを呼び出しるには、そのアクションのために定義されたURIにHTTP POSTリクエストを送信できます。 アクションのパラメータはPOSTリクエストの本文で定義されています。
  • Windows Azureのガイドラインに沿うために、すべてのURLは簡略化されるべきです。 「Key As Segment」に含まれている変更により、単一のキーをセグメントとして表現できるようになりました。 複数のキー値を使用する参照は、前述と同様に括弧で区切られた値が必要です。
  • このPSWSリリース以前は、作成、更新、削除操作を行う唯一の方法は、トップレベルのリソースに対してPost、Put、またはDeleteを呼び出すことでした。 今回のPSWSリリースで新たに導入されたContained Resource Operationsは、ユーザーが同じリソースに直接的にアクセスしながら同じ結果を達成できるようにし、まるでこれらのリソースが封じ込められているかのように近づくことを可能にします。

Windows PowerShell Web Access の新機能

  • ウェブベースのWindows PowerShell Web Accessコンソールでは、既存のセッションから切断・再接続が可能です。 ウェブベースのコンソールの セーブ ボタンで、セッションを削除せずに切断し、別のタイミングで再接続できます。
  • デフォルトのパラメータはサインインページに表示できます。 デフォルトパラメータを表示するには、サインインページの オプション接続設定 エリアにあるファイル内のすべての設定の値を web.configというファイルで設定してください。 web.config ファイルを使って、2つ目または別の認証情報セットを除くすべてのオプション接続設定を設定できます。
  • Windows Server 2012 R2では、Windows PowerShell Web Accessの認証ルールをリモートで管理できます。 Add-PswaAuthorizationRuleおよびTest-PswaAuthorizationRuleのコマンドレットには、管理者がリモートコンピュータやWindows PowerShellのWebアクセスセッションから認証ルールを管理できるCredentialパラメータが含まれています。
  • 新しいブラウザタブを使うことで、1つのブラウザセッション内に複数のWindows PowerShell Web Accessセッションを持てるようになった。 ウェブベースのWindows PowerShellコンソールで新しいセッションに接続するために新しいブラウザセッションを開く必要はなくなりました。

Windows PowerShell 4.0の注目すべきバグ修正

  • Get-Counter は、フランス語版Windowsでアポストロフィ文字を含むカウンターを返すことができるようになりました。
  • 現在、デシリアライズされたオブジェクトに対して GetType メソッドを表示できます。
  • #Requires ステートメントでは、必要に応じて管理者アクセス権をユーザーに必要とできるようになりました。
  • Import-Csv コマンドレットは現在、空欄を無視します。
  • Windows PowerShell ISEが Invoke-WebRequest コマンドを実行する際にメモリを過剰に消費する問題が解決されました。
  • Get-Moduleは 現在、バージョンカラムにモジュールのバージョン を表示します
  • Remove-Item -Recurse は予想通りサブフォルダからアイテムを削除します。
  • Get-Process 出力オブジェクトには UserName プロパティが追加されました。
  • Invoke-RestMethod コマンドレットは利用可能なすべての結果を返します。
  • Add-Member は、ハッシュテーブルにまだアクセスされていなくても、その効果が適用されます。
  • Select-Object -プロパティ の値がnullまたは空であれば、Expandは失敗せず例外も生成しません。
  • Get-Process は、オブジェクトから ComputerName プロパティを取得する他のコマンドとパイプライン内で使用できるようになりました。
  • ConvertTo-JsonConvertFrom-Json は、ダブルクォート付きの用語を受け入れることができ、エラーメッセージもローカライズ可能になりました。
  • Get-Jobは 新しいセッションでも完了した予定されたジョブを返送します。
  • Windows PowerShell 4.0で FileSystem プロバイダーを使ったVHDのマウントおよびアンマウントに関する問題は修正されました。 Windows PowerShellは、同じセッション内でマウントされた新しいドライブを検出できるようになりました。
  • ScheduledJobWorkflowモジュールを明示的に読み込んでジョブタイプに対応しようとする必要はなくなりました。
  • ネストワークフローを定義するワークフローのインポートプロセスにはパフォーマンスが向上しました。このプロセスは現在より速くなっています。

Windows PowerShell 3.0の新機能

Windows PowerShell 3.0には以下の新機能が含まれています。

Windows PowerShell ワークフロー

Windows PowerShell Workflowは、Windows Workflow Foundationの力をWindows PowerShellに持ち込みます。 ワークフローはXAMLやWindowsのPowerShell言語で書いて、コマンドレットを実行するのと同じように実行できます。 Get-Commandコマンドレットはワークフローコマンドを受け取り、Get-Helpコマンドレットはワークフローのヘルプを受け取ります。

ワークフローとは、長時間実行可能で、繰り返し可能で、頻繁で並列化可能、割り込み可能、サスペンション可能、再起動可能なマルチコンピュータ管理活動の連続です。 ワークフローは、ネットワーク障害、Windowsの再起動、停電などの意図的または偶発的な中断から再開できます。

ワークフローも移植可能です。XAMLファイルとしてエクスポートすることもインポートも可能です。 ワークフローやワークフロー内のアクティビティを委任されたユーザーや下位のユーザーが実行できるようにするカスタムセッション構成を書くことができます。

以下はWindows PowerShellワークフローの利点です

  • 連続した長期作業の自動化。
  • 長期作業のリモート監視。 活動の状況や進捗はいつでも確認できます。
  • マルチコンピュータ管理。 同時に、数百の管理されたノードでワークフローとしてタスクを実行します。 Windows PowerShell Workflowには 、PSComputerNameのような共通管理パラメータの組み込みライブラリが含まれており、これによりマルチコンピュータ管理シナリオが可能になります。
  • 複雑なプロセスの単一タスク実行。 関連するスクリプトを組み合わせて、エンドツーエンドのシナリオ全体を一つのワークフローにまとめることができます。
  • 持続性:ワークフローは作成者が定義した特定のポイントに保存され(またはチェックポイントで)、ワークフローを最初からやり直す代わりに、最後に永続されたタスク(またはチェックポイント)から再開できます。
  • 丈夫。 自動故障回復。 ワークフローは計画的・非計画的な再スタートを乗り越えて生き残ります。 ワークフローの実行を一時停止し、最後の永続ポイントから再開できます。 ワークフロー作成者は、1つ以上の管理されたノードで障害が発生した場合に再実行する特定のアクティビティを指定することができます。
  • 切断、再接続、切断されたセッションでの実行能力。 ユーザーはワークフローサーバーに接続・切断できますが、ワークフローは継続的に動作します。 クライアントコンピュータからログオフしたり、クライアントコンピュータを再起動したりして、ワークフローを中断せずに別のコンピュータからワークフローの実行を監視できます。
  • スケジュール設定。 ワークフロータスクは、WindowsのPowerShellコマンドレットやスクリプトのようにスケジュール化できます。
  • ワークフローと接続のスロットリングについて。 ワークフローの実行やノードへの接続を制限できるため、スケーラビリティや高可用性のシナリオが可能になります。

ウィンドウズ・パワーシェル・ウェブ・アクセス (Windows PowerShell Web Access)

Windows PowerShell Web Accessは、ユーザーがウェブベースのコンソール上でWindowsのPowerShellコマンドやスクリプトを実行できるWindows Server 2012の機能です。 ウェブベースのコンソールを使用するデバイスは、WindowsのPowerShell、リモート管理ソフトウェア、ブラウザプラグインのインストールを必要としません。 必要なのは、適切に設定されたWindows PowerShell Web Accessゲートウェイと、JavaScriptをサポートしクッキーを受け入れるクライアントデバイスブラウザだけです。

詳細については、「 Windows PowerShell Web Accessをデプロイする」をご覧ください。

新しいWindows PowerShell ISE機能

Windows PowerShell 3.0のWindows PowerShell統合スクリプト環境(ISE)には、IntelliSense、Show-Command ウィンドウ、統一コンソールパネル、スニペット、括弧のマッチング、展開・折りたたみセクション、自動保存、最近のアイテムリスト、リッチコピー、ブロックコピー、WindowsPowerShellスクリプトワークフローの作成完全サポートなど、多くの新機能が搭載されています。 詳細については about_Windows_PowerShell_ISEを参照してください。

Microsoft .NET Framework 4のサポート

Windows PowerShellはCommon Language Runtime 4.0に基づいて構築されています。 コマンドレット、スクリプト、ワークフローの作成者は、Windows PowerShellで新しいMicrosoft .NET Framework 4クラスを使用でき、アプリケーション互換性と展開、マネージド拡張フレームワーク、並列計算、ネットワーキング、Windows Communication Foundation、Windows Workflow Foundationなどの機能を備えています。

Windowsプリインストール環境のサポート

Windows PowerShell 3.0は、Windows 8用のWindows Preinstall Environment(Windows PE)4.0のオプションコンポーネントです。 Windows PEは、OSを持たないコンピュータを起動し、Windowsインストールの準備をする最小限のオペレーティングシステムです。 Windows PEはハードドライブのパーティションやフォーマット、ディスクイメージのコンピュータへのコピー、ネットワーク共有からのWindowsセットアップの開始に利用できます。 Windows PowerShell 3.0はWindows PE上で展開、診断、復旧シナリオの管理に利用できます。

切断されたセッション

Windows PowerShell 3.0以降、New-PSSession コマンドレットで作成した永続的なユーザー管理セッション(「PSSessions」)がリモートコンピュータに保存されます。 もはや作成されたセッションに依存していません。

今では、セッション内で実行中のコマンドを妨げることなく、セッションから切断できます。 セッションを終了してパソコンをシャットダウンできます。 後で、同じコンピュータや別のコンピュータの別のセッションからセッションに再接続できます。

Get-PSSessionコマンドレットのComputerNameパラメータは、たとえ別のセッションで開始されたとしても、コンピュータに接続されたすべてのユーザーのセッションを取得します。 セッションに接続してコマンドの結果を取得し、新しいコマンドを起動し、その後セッションから切断できます。

Disconnected Sessions機能をサポートするために、Disconnect-PSSessionConnect-PSSessionReceive-PSSessionなどの新しいコマンドレットが追加され、PSSessionsを管理するコマンドレットには、Invoke-CommandコマンドレットのInDisconnectedSessionパラメータなど新しいパラメータが追加されました。

切断セッション機能は、接続の発信側(「クライアント側」)と終了側(「サーバー」)側の両方のコンピュータがWindows PowerShell 3.0を実行している場合にのみサポートされます。

堅牢なセッション接続性

Windows PowerShell 3.0はクライアントとサーバー間の予期せぬ接続喪失を検出し、接続の再確立と実行再開を試みます。 もしクライアント-サーバー接続が割り当てられた時間内に再確立できない場合、ユーザーに通知されセッションは切断されます。 再接続の試み中、Windows PowerShellはユーザーに継続的なフィードバックを提供します。

切断されたセッションがInvokeCommandで開始された場合、Windows PowerShellは切断されたセッションのためにジョブを作成し、再接続や実行再開を容易にします。

これらの機能はより信頼性が高く回復可能なリモート体験を提供し、ワークフローなど堅牢なセッションを必要とする長期作業をユーザーが実行できるようにします。

更新可能なヘルプシステム

モジュール内のコマンドレットの最新のヘルプファイルをダウンロードできるようになりました。 Update-Helpコマンドレットは最新のヘルプファイルを識別し、インターネットからダウンロードし、解凍し、検証し、モジュールに適した言語固有のディレクトリにインストールします。

更新されたヘルプファイルを使うには、 Get-Helpと入力してください。 WindowsやPowerShellの再起動は必要ありません。 $pshomeディレクトリ内のモジュールのヘルプを更新するには、Windows PowerShellを「管理者として実行」オプションで起動してください。

インターネットアクセスがないユーザーやファイアウォールの背後にあるユーザーをサポートするために、新しい Save-Help コマンドレットのダウンロードはファイル共有などのファイルシステムディレクトリにヘルプファイルを提供します。 ユーザーは Update-Help コマンドレットを使ってファイル共有から最新のヘルプファイルを受け取ることができます。

Update-Helpコマンドレットを使って、サポートされるすべてのUI文化のモジュールや特定のモジュールのヘルプファイルを更新できます。 WindowsのPowerShellプロファイルに Update-Help コマンドを入れることも可能です。 デフォルトでは、Windows PowerShellはモジュールのヘルプファイルをダウンロードして1日に1回以上はダウンロードしません。

Windows 8およびWindows Server 2012モジュールにはヘルプファイルは含まれていません。 最新のヘルプファイルをダウンロードするには、 Update-Helpと入力してください。 詳細については、パラメータなしの「 Get-Help 」と入力するか、 about_Updatable_Helpをご覧ください。

コマンドレットのヘルプファイルがコンピュータにインストールされていない場合、 Get-Help コマンドレットは自動生成ヘルプを表示します。 自動生成のヘルプにはコマンド構文と、 Update-Help コマンドレットを使ってヘルプファイルをダウンロードするための手順が含まれています。

モジュール作成者は自分のモジュールに対してUpdatable Helpをサポートできます。 モジュール内にヘルプファイルを含めて、Updatable Helpを使って更新したり、ヘルプファイルを省略してUpdatableヘルプでインストールしたりできます。 Updateable Helpのサポートに関する詳細は 、「Updateable Helpのサポート」をご覧ください。

強化されたオンラインヘルプ

Windows PowerShellオンラインヘルプはすべてのユーザーにとって貴重なリソースですが、特に最新のヘルプファイルをインストールしていない、またはインストールできないユーザーにとって重要です。

Windows PowerShellコマンドレットのオンラインヘルプを得るには、以下を入力してください:

Get-Help <cmdlet-name> -Online

Windows PowerShellは、デフォルトのインターネットブラウザでヘルプトピックのオンライン版を開きます。

Windows PowerShell 3.0の Get-Help オンライン 機能はさらに強力になり、コマンドレットのヘルプファイルがインストールされていない場合でも動作します。 Get-Help -Online機能は、コマンドレットと高度な関数のHelpUriプロパティからオンラインヘルプトピック用のURIを取得します。

PS C:\>(Get-Command Get-ScheduledJob).HelpUri
https://go.microsoft.com/fwlink/?LinkID=223923

Windows PowerShell 3.0以降、C# cmdletの作成者は HelpUri プロパティをcmdletクラスに HelpUri 属性作成することで入力できるようになりました。 高度な関数の作成者は、CmdletBinding属性にHelpUriプロパティを定義できます。 HelpUriプロパティの価値は「http」または「https」で始まらなければなりません。

また、XMLベースのコマンドレットヘルプファイルの関連リンクの最初のリンクに HelpUri の値を含めることもできます。リンク指示は、機能内でコメントベースのヘルプを活用しています。

オンラインヘルプのサポートに関する詳細は 「サポートオンラインヘルプ」をご覧ください。

CIM統合

Windows PowerShell 3.0には共通情報モデル(CIM)のサポートが含まれており、これはシステム、ネットワーク、アプリケーション、サービスに関する管理情報の共通定義を提供し、異種システム間での管理情報の交換を可能にします。 Windows PowerShell 3.0におけるCIMのサポート、新規または既存のCIMクラスに基づくWindows PowerShellコマンドレットの作成、コマンドレット定義XMLファイルに基づくコマンドの作成、CIM .NET Frameworkのサポートが含まれます。 API、CIM管理コマンドレット、WMI 2.0プロバイダーなどです。

セッション設定ファイル

Windows PowerShell 3.0からは、ファイルを使ってカスタムセッション構成を設計できます。 新しいセッション設定ファイルでは、セッション構成を利用するセッション環境を決定できます。どのモジュール、スクリプト、フォーマットファイルがセッションに読み込まれるか、ユーザーが使用できるコマンドレットや言語要素、実行可能なモジュールやスクリプト、認識可能な変数などが含まれます。

ユーザーが特定のモジュールからコマンドレットを実行できるセッションや、すべてのモジュールにアクセスでき、高度なタスクを実行するスクリプトにアクセスできる完全な言語を持つセッションを設計することも可能です。

以前のWindows PowerShellのバージョンでは、このレベルの制御はC#プログラムや複雑なスタートアップスクリプトを書ける人のみが利用可能でした。 現在、コンピュータ上の管理者グループのメンバーなら誰でも、設定ファイルを使ってセッション構成をカスタマイズできます。

セッション構成ファイルを作成するには、New-PSSessionConfigurationFile コマンドレットを使用します。 セッション構成ファイルをセッション構成に適用するには、 Register-PSSessionConfiguration または'Set-PSSessionConfiguration cmdletを使用します。

詳細については、 about_Session_Configuration_Files および New-PSSessionConfigurationFileを参照してください。

スケジュールされたジョブとタスクスケジューラの統合

Windows PowerShellのバックグラウンドジョブをスケジュール管理し、Windows PowerShellやTask Schedulerで管理できるようになりました。

Windows PowerShellのスケジュールジョブは、WindowsのPowerShellバックグラウンドジョブとタスクスケジューラタスクの便利なハイブリッドです。

WindowsのPowerShellバックグラウンドジョブと同様に、スケジュールされたジョブはバックグラウンドで非同期で実行されます。 完了したスケジュールされたジョブのインスタンスは、 Start-JobGet-Jobなどのジョブコマンドレットを使って管理できます。

タスクスケジューラのタスクと同様に、スケジュールジョブは一度きりのスケジュールや繰り返しスケジュール、またはアクションやイベントに応じて実行できます。 スケジュールされたジョブはタスクスケジューラで表示・管理し、必要に応じて有効・無効化、実行またはテンプレートとして使用、ジョブ開始条件の設定が可能です。

さらに、スケジュールされたジョブには管理用のカスタマイズされたコマンドレットセットが付属しています。 コマンドレットはスケジュールジョブの作成、編集、管理、無効化、再有効化、スケジュールジョブトリガーの作成、スケジュールジョブオプションの設定を行えます。

スケジュールされた仕事の詳細については、 about_Scheduled_Jobsをご覧ください。

Windows PowerShell言語の強化

Windows PowerShell 3.0には、言語をよりシンプルで使いやすくし、よくあるエラーを避けるために設計された多くの機能が含まれています。 改善点には、プロパティ列挙、スカラーオブジェクトのカウントおよび長さプロパティ、新しいリダイレクト演算子、$Usingスコープ修飾子、PSItem自動変数、柔軟なスクリプトフォーマット、変数の属性、簡略化された属性引数、数値コマンド名、Stop-Parsing 演算子、改良された配列スプラッティング、新しいビット演算子、順序辞書、PSCustomObjectのキャスト、そしてコメントベースのヘルプの改善が含まれます。

新しいコアコマンドレット

Windows PowerShellインストールには、スケジュールされたジョブ管理、切断セッション、CIM統合、Updatable Help Systemなどのコマンドレットが追加されました。

  • CimCmdlets
    • Get-CimAssociatedInstance
    • Get-CimClass
    • Get-CimInstance
    • Get-CimSession
    • Invoke-CimMethod
    • New-CimInstance
    • New-CimSession
    • New-CimSessionOption
    • Register-CimIndicationEvent
    • Remove-CimInstance
    • Remove-CimSession
    • Set-CimInstance
  • Microsoft.PowerShell.Core
    • Connect-PSSession
    • Disconnect-PSSession
    • New-PSSessionConfigurationFile
    • New-PSTransportOption
    • Receive-PSSession
    • Resume-Job
    • Save-Help
    • Suspend-Job
    • Test-PSSessionConfigurationFile
    • Update-Help
  • Microsoft.PowerShell.Diagnostics
    • New-WinEvent
  • Microsoft.PowerShell.Management
    • Get-ControlPanelItem
    • コンピューターの名前を変更
    • Show-ControlPanelItem
  • Microsoft.PowerShell.Utility
    • ConvertFrom-Json
    • ConvertTo-Json
    • Get-TypeData
    • Invoke-RestMethod
    • Invoke-WebRequest コマンド (Webリクエストを実行するためのコマンド)
    • Remove-TypeData
    • Show-Command
    • Unblock-File
  • PSScheduledJob(求人予定)
    • Add-JobTrigger
    • Disable-JobTrigger
    • Disable-ScheduledJob
    • Enable-JobTrigger
    • Enable-ScheduledJob
    • Get-JobTrigger
    • Get-ScheduledJob
    • Get-ScheduledJobOption
    • New-JobTrigger
    • New-ScheduledJobOption
    • Register-ScheduledJob
    • Set-JobTrigger
    • Set-ScheduledJob
    • Set-ScheduledJobOption
    • Unregister-ScheduledJob
  • PSWorkflow
    • New-PSWorkflowExecutionOption
    • New-PSWorkflowSession
  • PSWorkflowUtility
    • Invoke-AsWorkflow
  • 伊勢
    • Get-IseSnippet
    • Import-IseSnippet
    • New-IseSnippet

既存のコアコマンドレットおよびプロバイダーの改善

Windows PowerShell 3.0は既存のコマンドレットに対して新機能を追加し、簡略化された構文や以下のコマンドレットの新しいパラメータを追加しました:Computer cmdlet、CSV cmdlet、Get-ChildItem、Get-Command、Get-Content、Get-History、Measure-Object、Security cmdlet、Select-Object、Select-String、Split-Path、Start-Process、Tee-Object、Test-Connection、Add-Member、WMI cmdlet。

Windows PowerShellプロバイダーも大幅に改善され、ウェブホスティング用のSecure Socket Layer(SSL)証明書の管理のための証明書プロバイダーのサポート、認証情報、永続的なネットワークドライブ、ファイルシステムドライブ内の代替データストリームのサポートが含まれるようになりました。

リモートモジュールインポートとディスカバリー

Windows PowerShell 3.0は、リモートコンピュータ上でモジュールの発見、インポート、暗黙のリモート機能を強化します。 モジュールコマンドレットはリモートコンピュータ上でモジュールを取得し、WindowsのPowerShellリモートを使ってリモートまたはローカルコンピュータにインポートします。 新しいCIMセッションサポートにより、CIMやWMIを使って非Windowsコンピュータを管理できるようになり、リモートコンピュータ上で暗黙的に実行されるコマンドをローカルコンピュータにインポートできます。

詳細については、 Get-Module および Import-Module コマンドレットのヘルプトピックをご覧ください。

強化タブ補完

Windows PowerShellコンソールのタブ補完は、cmdlet、パラメータ、パラメータ値、列挙、.NET Frameworksの型、COMオブジェクト、隠しディレクトリなどの名前を補完するようになりました。 タブ補完機能は、新しいパーサーと抽象構文ツリーを基に完全に書き直され、メモリ内の解析木や中間線タブ補完など、より多くのシナリオをサポートします。

モジュール自動装填

Get-Commandコマンドレットは、モジュールが現在のセッションにインポートされていなくても、コンピュータにインストールされているすべてのモジュールからすべてのコマンドレットと関数を取得します。

必要なコマンドレットを手に入れたら、モジュールをインポートせずにすぐに使えます。 Windows PowerShellモジュールは、モジュール内の任意のコマンドレットを使うと自動的にインポートされます。 モジュールを検索してインポートする必要はもうありません。

モジュールの自動インポートはコマンド内のコマンドレットを用いてトリガーされます。ワイルドカードなしのコマンドレットに対して Get-Command を実行し、ワイルドカードなしのコマンドレットに対して Get-Help を実行します。

$PSModuleAutoLoadingPreferenceのプリファレンス変数を使ってモジュールの自動インポートを有効化・無効化・設定できます。

詳細については、 about_Modulesabout_Preference_VariablesGet-Command および Import-Module コマンドレットのヘルプトピックをご覧ください。

モジュール体験の向上

Windows PowerShell 3.0はモジュールに高度な機能サポートをもたらし、以下の新機能も含まれます。

  1. 個々のモジュールのモジュールログ(LogPipelineExecutionDetails)と新しい「Turn on Module Logging」グループポリシー設定
  2. モジュールマニフェストの値を公開する拡張モジュールオブジェクト
  3. すべてのタイプのコマンドを組み合わせる、ネスト型モジュールを含むモジュールの新しい ExportedCommands プロパティ
  4. PathパラメータとListAvailableパラメータを同一コマンド内で許可するなど、利用可能な(インポートされていない)モジュールの発見が改善されました
  5. モジュール内の新しい DefaultCommandPrefix キーが現れ、モジュールコードを変更しずに名前の競合を回避します。
  6. バージョンとGUIDを備えた完全認定の必要モジュールや、必要なモジュールの自動インポートを含む改良されたモジュール要件
  7. New-ModuleManifestコマンドレットのより静かで流線型の運用。
  8. 新しい モジュール パラメータ #Requires
  9. MinimumVersionおよびRequiredVersionパラメータを備えた改良されたImport-Moduleコマンドレット。

簡易コマンドディスカバリー

すべてのモジュールをインポートしてセッションで利用可能なコマンドを見つける必要はなくなりました。 Windows PowerShell 3.0では、 Get-Command コマンドレットがインストール済みのすべてのモジュールからすべてのコマンドを取得します。 また、コマンドを使うと、そのコマンドをエクスポートするモジュールが自動的にセッションにインポートされます。

新しい Show-Command コマンドレットは特に初心者向けに設計されています。 ウィンドウでコマンドを検索できます。 すべてのコマンドを表示したりモジュールごとにフィルターしたり、ボタンをクリックしてモジュールをインポートしたり、テキストボックスやドロップダウンリストを使って有効なコマンドを作成し、ウィンドウを離れずにコマンドをコピーまたは実行したりできます。

ログ、診断、グループポリシーサポートの改善

Windows PowerShell 3.0は、Windows in Event Tracing (ETW)ログのサポート、モジュールの編集可能な LogPipelineExecutionDetails プロパティ、そして「Turn on Module Logging」グループポリシー設定を用いることで、コマンドやモジュールのログおよびトレースサポートを改善しています。 ログプロパティを表示することで、ログ詳細からパラメータ値を取得できるようになりました。

フォーマットと出力の改善

新しいフォーマットと出力の改善により、すべてのWindows PowerShellユーザーの効率が向上します。 改善点には、すべてのストリームの出力リダイレクト、Format.ps1xmlファイルを使わずに動的に型を追加できる強化された Update-Type コマンドレット、出力でのワードラップ、カスタムオブジェクトのデフォルトの書式設定、 PSCustomObject 型、WMIオブジェクトおよび異種オブジェクトの書式化の改善、メソッドオーバーロードの検出サポートが含まれます。

強化されたコンソールホスト体験

Windows PowerShellコンソールホストプログラムには、Windows PowerShell 3.0で新機能としてデフォルトでシングルスレッドアパートメント機能が追加されています。 ファイルエクスプローラーの新しい「PowerShellで実行」オプションでは、右クリックだけで制限のないセッションでスクリプトを実行できます。 新しいコンソールホストの起動ロジックによりWindowsPowerShellの起動速度が速くなり、新しいフォントで馴染みのあるコンソールウィンドウ体験をパーソナライズできます。

新しいコマンドレットおよびホスティングAPI

新しいCmdlet APIおよびHosting APIには、公開の高度構文木(AST)APIや、パイプラインページング、ネストパイプライン、ランスペースプールのタブ補完、Windows RT、Obsolete cmdlet属性、FunctionInfoオブジェクトの動詞および名詞プロパティのAPIが含まれます。

パフォーマンスの向上

Windows PowerShellの大幅な性能向上は、.NET Framework 4の動的実行時言語言語(DLR)を基に構築された新しい言語パーサーに加え、ランタイムスクリプトのコンパイル、エンジンの信頼性向上、特にネットワーク共有の検索時にパフォーマンスを向上させる Get-ChildItem アルゴリズムの変更によってもたらされています。

RunAと共有ホストサポート

Windows PowerShell 3.0はRunAおよび共有ホスト機能のサポートを含みます。

Windows PowerShell Workflow向けに設計された RunAs 機能は、セッション構成のユーザーが共有ユーザーアカウントの権限で実行されるセッションを作成できるようにします。 これにより、権限の低いユーザーが管理者権限で特定のコマンドやスクリプトを実行できるようになり、管理者グループに上級のユーザーを追加する必要が減ります。

SharedHost機能は、複数のコンピュータ上の複数のユーザーが同時にワークフローセッションに接続し、ワークフローの進捗を監視できるようにします。 ユーザーはあるコンピュータでワークフローを開始し、元のコンピュータから切断せずに別のコンピュータのワークフローセッションに接続できます。 ユーザーは同じ権限を持ち、同じセッション構成を使用している必要があります。 詳細については、「Windows PowerShell Workflowの入門方法」をご覧ください。

特殊文字処理の改善

Windows PowerShell 3.0の特殊文字の解釈と正しい処理能力を向上させるために、パス内の特殊文字を扱う LiteralPath パラメータは、 Path パラメータを持つほぼすべてのコマンドレット(新しい Update-Help cmdletや Save-Help cmdletを含む)で有効です。 パーサーには、バックティック文字(`)やファイル名やパス内の角括弧の処理を改善するための特別なロジックも含まれています。

こちらもご覧ください