日本時間の2013年10月17日午後8時に正式公開されたWindows Server 2012 R2。2012 R2に標準搭載されたWindows Management Flamework(WMF)も早いもので4.0となり、.NET Framework 4.5ベースのシステム管理フレームワークとしてさらなる進化を遂げています。
今回は、WMFのフロントエンドともいうべき PowerShell 4.0 の新機能について、オフィスにいた弊社のコンサルに「なんか使えそうなのない?」という問いかけに対して反応があったものを紹介します。
新機能の一覧は、こちらをを参照してください。 New Features in Windows PowerShell 4.0
ーWindows PowerShell Desired State Configuration (DSC)
今回の目玉で、ネット上で色々取り上げられていることからも注目度の高い機能です。
これで実現出来る機能ですが、字面そのままで「要求された状態に構成する」で、従来のスクリプトだと、「こうしなさい」という手順を命令的(Imperative)に記述していたところを「最終的にこうなるべき」という宣言的(Declarative)な構文 "Configuration " で記述することができます。今まではこの状態だったらこれ、そうじゃなくて違う状態だったらこれといった条件を設定して状態毎に指示する必要がありましたが、それが不要になります。
詳細はこちらのサイトでMSMVP for PowerShellのライター牟田口大介さんが非常に丁寧に解説されていましたので是非参照してください。
いわゆるDevOps、継続的なデプロイを実装するには、Ops側に自動化の実装で担当者の負担が大きかったコーディング負荷をDSCで大きく改善することが期待されます。
さて今回は「おぉ、これは使えるかも」ネタ探しが目的なので、バンバンいきます。
ーInvoke-RestMethod and Invoke-WebRequest
PowerShell コマンドレット名がわかりやすく機能を指すので読んだ通りなのですが、-Headers
パラメータを使うことで WebRequest にヘッダーを付与することができます。今までこのためだけに一つ仕組みを作っていたところを、簡単にいろいろ書けるようになるねという機能です。
ーThe Get-Process cmdlet has a new switch parameter, IncludeUserName.
プロセスの実行ユーザー名が管理者権限があれば取得できるようになります。
これは単純に便利だよねというもので、SAPの運用でも地味に役立ちそう。
ーA RunNow parameter for Register-ScheduledJob and Set-ScheduledJob eliminates the need to set an
immediate start date and time for jobs by using the Trigger parameter.
即時実行のための RunNow
パラメータが追加。従来Trigger
の設定が必要でしたが即時実行はRunNow
でOK。
これと先のDSCとの組み合わせで、例えば環境の初期設定を自動化する場合に、従来だとJenkinsやcloudInitとかでやろうかというところがPowerShellだけでできるということです。
ーPipelineVariable
バッチの話になってしまいますが、並列化したシステムの管理目的でバッチジョブをどう実装して管理するかは結構な課題です。Unixだとパイプを使ってリモート実行の結果をローカルの親バッチに反映して処理するなんてのは簡単ですが、これで自動変数を変数に格納していた処理が簡易に実装する事が可能になります。
ーmethod invocation by using dynamic method names is supported.
これまでも動的なプロパティ名実行は可能でしたが、メソッド名実行は出来ませんでした。
インフラの現場でPowerShellでこれを使うことになるのでしょうか?!、そうなるとインフラエンジニアにとっては課題になりそうです。
ーThe Windows PowerShell debugger has been enhanced to allow debugging of Windows PowerShell workflows, as well as scripts that are running on remote computers.
リモートコンピュータで実行しているスクリプトであっても、リモートセッション越しにデバッグが可能に。 セッションが切断した後に再接続してもデバッグセッションは保持されるそうなので、現場でもかなり使えそうです。
最後におまけ
SAP BASIS担当者なら何度も Set-ExecutionPolicy RemoteSigned を実行していると思いますが、Windows Server 2012 R2 規定の Execution Policyが Restricted(禁止) から RemoteSigned に変わりました。これでおまじないを打つ手間が省けます。
紹介は以上です。
Windows 2012 R2の源流であるWindows NTの開発リーダーであり、Azureのリード開発者の一人でもある David CatlerはGUIではなくCUIへの強い拘りがあって、「新しいOSに当時のWindowsのGUIは載せたくない!最高のシェルを載せるんだ。」と当時主張していたとかいないとか。最終的にはGUI(それも汎用的なWindows デスクトップ)を載せることで製品として大成功し今があるわけですが、Windows OS というかCloudOSになった今、シェルの位置づけがキーになっているのは現実です。
インフラ、BASIS担当の技術者でプログラミングは苦手だからという方は、もう一回プログラムの基本から勉強したほうがよいかもしれません。
最後まで長文お読み頂きありがとうざいました。
- カテゴリ: 技術情報