【Management】Windows Management Framework 3.0 Beta

Windows Management Framework 3.0 ベータ版がリリースされています。

Download: WMF3 Beta - Microsoft Download Center - Download Details(英語版です)

既に、Windows Server 2008 R2 や Windows 7 には WMF 2.0 相当の機能がインストールされていますが、WMF 3.0 Beta をインストールすることで、新しい Windows Server "8" と同等の管理フレームワークを実装することができます。

なお、インストールするには事前に以下をインストールしておく必要があるの注意しましょう。

さらに、一旦英語環境に変更しておく必要がありますので、これも注意しましょう。

image

なので、本番の運用環境にインストールするのは厳しいと思います。コマンドレットや PowerShell スクリプトの仕様なんかも変更されているので、テスト環境を使用していただくことを強くお勧めします。

では、簡単にどんなものがインストールされるかをご紹介します。

Windows PowerShell 3.0

待ちに待った Windows PowerShell 3.0 です。PowerShell 3.0 によって何ができるようになるかというと....

※ 詳しくは What's New in Windows PowerShell 3.0 を参照してください。

  • ワークフロー
    PowerShell 3.0 ではバックグラウンドジョブ機能が大きく強化されています。これについては牟田口さんの記事Ahf さんの記事に詳しく書かれているのでここでは割愛しますが、例えば、System Center Virtual Machine Manager のセルフサービスポータルのように、利用者が仮想マシンの作成を要求し、承認後に仮想マシン作成処理が動きだし、しばらくして仮想マシンの作成が完了したら申請者にメールで知らせる...などといったプロセスを実装することができます(GUI が必要じゃないかどうかは別として)。
  • セッションへの再接続
    英語では Robust sessions(堅牢なセッション)と表現されていますが、ちょっとわかりずらいので「再接続」としました。前出のワークフローのように、複数単位で構成されるジョブには必須の機能ですね。例えば、リモートコンピューターでジョブを実行し、一旦ローカルPCを再起動後、再度そのセッションに接続してジョブの実行経過を監視する..なんてことができます。Windows PowerShell Web Access を併用すれば、社内で開始したジョブを、自宅に帰ってブラウザから状況を監視する...なんてこともできるわけです。これは IT Pro にとってはうれしい機能です。
  • ジョブスケジューリング
    以下に示すコマンドレットを使用して、PowerShell からタスクにジョブを登録することができます。もちろんジョブトリガーを定義することもでき、これもワークフローにとって必要な機能ですね。

    PS C:\> Get-Command -Module PSScheduledJob

    Capability Name ModuleName ---------- ---- ---------- Cmdlet Add-JobTrigger PSScheduledJob Cmdlet Disable-JobTrigger PSScheduledJob Cmdlet Disable-ScheduledJob PSScheduledJob Cmdlet Enable-JobTrigger PSScheduledJob Cmdlet Enable-ScheduledJob PSScheduledJob Cmdlet Get-JobTrigger PSScheduledJob Cmdlet Get-ScheduledJob PSScheduledJob Cmdlet Get-ScheduledJobOption PSScheduledJob Cmdlet New-JobTrigger PSScheduledJob Cmdlet New-ScheduledJobOption PSScheduledJob Cmdlet Register-ScheduledJob PSScheduledJob Cmdlet Remove-JobTrigger PSScheduledJob Cmdlet Set-JobTrigger PSScheduledJob Cmdlet Set-ScheduledJob PSScheduledJob Cmdlet Set-ScheduledJobOption PSScheduledJob Cmdlet Unregister-ScheduledJob PSScheduledJob

  • Delegated Administration(管理の委任)
    PowerShell 2.0 でもセッションのエンドポイントに対する委任機能がありましたが、3.0でそれが強化されたようです。ただ、具体的に何が強化されたのか...うーんごめんなさい。追いきれていません。ワークフローでの委任だとは思うのですが...。
  • 構文の簡易化
    「構文の簡易化」といきなり言われましても...な感じではあるのですが、 Keith Hill's Blog からの引用によれば以下のように $_ が必要なくなるなど、大きく改善しているようです。もちろん以前の書き方も下位互換性のためにサポートされています。
    旧:Get-Process | Where {$_.PM -gt 100MB}
    新:Get-Process | Where PM -gt 100MB

    確かにこれはうれしいです。でも、$_ に慣れちゃったからなぁ。。。とか言って....。
  • Cmdlet Discovery 
    いま PowerShell を使っていて何がストレスになるかって、Import-Module をしないと Get-Command でコマンドレットが参照できないってことです。 今回の改善によって、Get-Command -Module ActiveDirectory とかを実行したときに、自動的に Import-Module が実行されます。これは、地味~ではありますがうれしいです。
  • Show-Command コマンドレット
    Show-Command コマンドレットを使用すると、モジュールごとにどんなコマンドレットが用意されているのかを GUI で確認できる他、GUI上でパラメタ等を指定して直接実行することができる優れものです。この機能は PowerShell ISE でも提供されています。
    VBScript 時代に ScriptOmatic や WMIOmatic というツールがあったのですが、あれの高機能 PowerShell 版といったところでしょうか。
    imageimage image

この他、いろいろとアップデートされていますので、詳しくは What's New in Windows PowerShell 3.0 を参照してください。

WMI

Script Geek には欠かせない WMI(Windows Management Instrumentation)ですが、これもアップデートされました。

  • 新しい開発モデル
    従来の COM 依存からの脱却
  • CIM(Common Interface Model)との親和性強化
    CIM とは DMTF によって標準化されたマルチプラットフォーム環境における標準管理モデルです。WMI とは CIM 標準の MS 実装版ですが、こいつが CIM 標準との親和性を高めることにより、今まで以上に Windows 以外のプラットフォームを Windows 上からに柔軟に管理できるようになります。現在は OpenPegasus というオープンソースが普及?しており、例えば Linux 上に OpenPegasus がインストールされていれば WMI から Linux に接続して管理すると言ったことが可能ではありますが、 出来ることに制約があったりスピードが遅かったりと問題が無いわけではありません。じゃ、どうするのかといえば...詳しくは書けないのですが、これをなんとかしようという動きが無いこともありません。
  • ネイティブコードによるPowerShellコマンドレットの開発

WinRM

前出の CIM はあくまでもオブジェクトモデルであり、これだけで管理が行えるわけではありません。PowerShell や各種コマンドの要求を受け入れるサービスが必須です。CIM に対応したインターフェース標準として WBEM(Web-Based Enterprise Management)というものがあり、その実装として普及しているのが WS-Man(Web Service Management)です。でもって、WS-Man の MS 実装版が WinRM(Windows Remote Management)ということになります(疲れますね)。

WinRM は以前のバージョンとくらべて、接続性が大きく改善されています。この改善が、PowerShell 3.0 の「再接続可能なセッション」を実現しています。

Windows PowerShell Web Service(WPWS)

※この機能、Windows Server 2008 R2 に提供されています??恥ずかしながら見つけられませんでした...。

その名称から容易に想像できますが、PowerShell の要求を受け付ける Web Service が提供されます。インターフェースが ODATA なので、どんなクライアントからでも接続が可能だというメリットがあります。

このサービスの面白いところは、WPWS をゲートウェイとして別のコンピューターの WinRM に接続できる点です。つまり、DMZ にこのサービスを立てておけば、社内のサーバーに接続して自宅から管理が行えます。PowerShell  3.0 でコマンドレットが 2300 にまで増えたので、管理のし甲斐があるってもんです。

標準では、ブラウザからアクセス可能なGUIが提供されています。もちろん、スマートフォンからのアクセスも可能です。

image pswa_phone

Server Manager CIM Provider

Windows Server "8" のサーバーマネージャーから、Windows Server 2008 R2 SP1 および Windows Server 2008 SP2 のサーバーマネージャーに接続するための CIM プロバイダーです。WMF 3.0 をインストールし、さらに、Enable-PSRemoting コマンドレットでリモートからの接続を許可すると、Windows Server "8" から Windows Server 2008/2008 R2 のサーバーマネージャーを操作できるようになります。

PS C:\Users\Administrator> Enable-PSRemoting

WinRM Quick Configuration Running command "Set-WSManQuickConfig" to enable this machine for remote management through WinRM service. This includes: 1. Starting or restarting (if already started) the WinRM service 2. Setting the WinRM service type to auto start 3. Creating a listener to accept requests on any IP address 4. Enabling firewall exception for WS-Management traffic (for http only).

Do you want to continue? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Yes WinRM has been updated to receive requests. WinRM service type changed successfully. WinRM service started.

WinRM has been updated for remote management. Created a WinRM listener on https://* to accept WS-Man requests to any IP on this machine. WinRM firewall exception enabled.

Confirm Are you sure you want to perform this action? Performing operation "Set-PSSessionConfiguration" on Target "Name: microsoft.powershell SDDL: O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD). This will allow selected users to remotely run Windows PowerShell commands on this computer". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Yes

Confirm Are you sure you want to perform this action? Performing operation "Set-PSSessionConfiguration" on Target "Name: microsoft.powershell.workflow SDDL: O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD). This will allow selected users to remotely run Windows PowerShell commands on this computer". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): y

Confirm Are you sure you want to perform this action? Performing operation "Set-PSSessionConfiguration" on Target "Name: microsoft.powershell32 SDDL: O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD). This will allow selected users to remotely run Windows PowerShell commands on this computer". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): y

Confirm Are you sure you want to perform this action? Performing operation "Set-PSSessionConfiguration" on Target "Name: microsoft.ServerManager SDDL: O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD). This will allow selected users to remotely run Windows PowerShell commands on this computer". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): y PS C:\Users\Administrator>

image