以下の内容はhttps://tech.guitarrapc.com/entry/2013/10/25/071306より取得しました。


PowerShell 4.0 の機能についてまとめてみる (後編)

さて、前回PowerShell 4.0についての新機能を紹介しました。

今回は、その他の新機能と改善点などです。

PowerShell ISEの新機能

PowerShell ISEは、言わずと知れたPowerShell統合スクリプティング環境です。標準でOSについてくる開発環境として、VSに統合されるのを望みますが、標準このメリットもまた見逃せないところですね。

Debugerの機能強化 - PowerShell WorkflowとRemoting

PowerShell ISEもWindows Workflowとリモートスクリプト実行のデバッグをサポートしました。

例えリモートコンピュータで実行しているスクリプトであっても、リモートセッション越しにデバッグが可能になりました。これで、Workflowは、スクリプトレベルでPowerShell, PowerShell ISEの両方でデバッグが可能です。

DSCのインテリセンスサポート

DSCの新しいキーワードである、configurationsDSCのResource Providerに関してもインテリセンスがサポートされています。

また、TechNetには紹介されていませんが、コードスニペットでもconfigurationsはサポートされています。

PowerShell Workflowの新機能

Workflowは、PowerShellにとっては大事な存在です。WorkflowはTransaction / Checkpointなど継続処理に対して強く、処理の指示が用意で、かつPowerShell構文と同様に書けるためです。言語でサポートされている、これは強力な一端と言えます。

Workflowに関しては、以前まとめた記事PowerShell における Windows Workflow Foundation 4.0 (WF) 利用のすすめをどうぞ。

PipelineVariableパラメータの追加

これにより、パイプラインで渡していく処理で、Foreach-Objectを使って自動変数を変数に格納していた処理が簡易になりえます。

特に、System Center Orchestratorなどでもわかりますが、左から右にコマンドが次々にストリームとして渡されます。

タブ補完の機能強化

これまでタブ補完が効かなかったシナリオでも有効になっています。例として、現在のRunspaceに存在しないコマンドなどでもタブ補完が効くようになりました。

カスタムコンテナーアクティビティーのサポート

アクティビティパラメータの型が、 ActivityActivity[]あるいはActivity のGeneric Collectionだった場合に、引数としてScriptBlockを渡すとScriptBlockをXAMLに変換します。

また、これは、通常のPwoerShellにおけるScriptからWorkflowへのコンパイルも同様です。*1

クラッシュした場合の自動再接続

もしWorkflowの途中でクラッシュしても、PowerShell Workflowは自動的に管理対象ノードに再接続します。

Foreach -Parallelでのthrottle調整

ThrottleLimitプロパティで調整が可能になります。いよいよ5以上のパラレル実行が現実を帯びてきたのか楽しみですね。これは近々試します。

ErrorActionにSuspendパラメータを追加

WorkflowのErrorAction専用となります。

Workflowエンドポイントでセッションの自動クローズ

対象となるアクティビティのジョブ状態は、「in-progressでないこと」「pendingでないこと」です。これにより、サーバーで閉じられるアクティビティは閉じる動作が実装されます。WSManの制限もあるのでぜひ望んでいた機能になりますね!

PowerShell Web Servicesの新機能

エラーの詳細表示とAzure REST APIガイドライン準拠

PowerShell Web ServiceやIIS拡張ODataでCmdlet実行時にエラーが発生した場合に、詳細エラーメッセージとエラーコードがCallerに表示されます。

またAzure Rest APIのエラーガイドラインに沿ったエラー表示となります。

エンドポイントでのAPIバージョン指定

特定バージョンのAPI使用強制も可能になり、クライントとサーバーでバージョンミスマッチが起こった場合は、クライントとサーバーの両方でエラーが表示されます。

型変換機能の改善

デフォルトコンストラクターと異なるコンストラクタを使用した場合の型変換が改善しています。Windows PowerShellでいうところのPSTypeConverterと同様の動作となります。

名前付きリソースストリームのサポート

画像やオーディオ、ビデオなど大きなバイナリ転送コストは膨大になります。またこれらの転送ではバイナリをエンコーディングせずに送るほうが望ましくなります。

PSWSは、エンコーディングせずに名前付きリソースで転送しています。名前付きリソースは、Edm.Stream型のプロパティとなり、各リソースストリームは個別のURIをGet/Update操作に対して持っています。

OData操作のサポート

HTTP POSTリクエストで、対象URIに行いたい操作を送ることができます。操作に対するパラメータはPOST操作のbodyに設定します。

URLの単純化

Windows Azureガイドラインに沿い全URLが単純化されました。Key As Segmentがセグメントを1つのキーで表現するようになっています。もし複数のキーを参照する場合は、カンマ,で区切って表現してください。

リソース操作の直感的な実行

以前は、Create, Update, Delete操作はPost/Put/Top LevelのDeleteを行うことでのみ実施可能でした。

本バージョンでは、これらの操作をリソース操作に含むことで、より直観的に行えるようになっています。

PowerShell Web Accessの新機能

セッションの切断と再接続

Web Console上のSaveボタンでセッションを消すことなく切断し、再度接続できるようになりました。

サインインページのデフォルトパラメータ表示

これを有効にするには、web.configOptional Connection Settingsエリアで表示したい値を設定します。

オプショナル接続設定も可能ですが、2個以上の認証ではできません。

リモートからの認証管理

新CmdletとしてAdd-PswaAuthorizationRuleTest-PswaAuthorizationRuleに、Credentialパラメータが追加されたことで、管理者が「リモートコンピュータの認証」や「Widows PowerShell Web Accessセッション」を管理可能になりました。

ブラウザタブでの複数セッション対応

これで、新たにブラウザを立ち上げて新しいセッションを作成する必要はなくなりました。

バグ修正と改善

PowerShell 4.0で特筆すべきバグ修正と改善点です。

Get-Counterのフランス語対応

デシリアライズオブジェクトでのGetTypeメソッド対応

#Requiresステートメントでの管理者権限チェック

利用する場合は、 #Requires -RunAsAdministratorとします。

これは、以前のコードでいう以下と同義です。

([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

Import-Csvでの空白行の無視

以前は、Select-Stringで \wなどが必要だったので楽になりました。

Invoke-WebRequestのメモリリーク修正

Get-Moduleのバージョン表示

Versionプロパティに.psd1のバージョンが表示されるようになりました。

Remove-Item -Recurseの改善

これ本当にうれしいです。面倒だったので。

Get-ProcessへのUserNameプロパティ追加

UserNameプロパティでユーザー名が表示されるようになりました。

Invoke-RestMethodの結果取得改善

Connectで報告されていた以下の修正です。RSSや普段使いとして非常に致命的だったためこれで安心して使えます。

Invoke-RestMethod Accept header

でもこれは直さないっていってますん。

Invoke-RestMethod returns incorrect data | Microsoft Connect

HashtableへのAdd-Member改善

以下が修正されています。

Add-Member doesn't work on Hashtables until they've been accessed.

Select-Object -Expandのnull処理改善

Get-ProcessのComputerNameパイプライン対応

ConvertTo-JsonとConvertFrom-Jsonの改善

以下のバグの修正です。

@{ D='AAAA"BBBB' } | ConvertTo-Json

ConvertTo-JSON in PSv3 Beta does not support values containing double-quotes

Get-JobのScheduled Job対応

VHDマウント・アンマウントの修正

PowerShellは、今後新しいドライブとして同一セッションで認識します。

ジョブタイプの自動認識

Workflowネスト時のパフォーマンス改善

まとめ

以上が、PowerShell 4.0の機能として紹介されています。

一部まだ不明なものがありますが、Invoke-RestMethodWorkflowに改善が入ったことはとてもうれしいですね。

また、Windows Server 2012 R2のデフォルト実行状態がRemoteSignedなのも歓迎です。

PwoerShell 4.0はDSCが注目されていますが、メソッド構文やPipeline Variablesなど多くの使い心地の向上が増しています。

今後もPowerShellについて、アップデートを発信していきますね!

*1:これに関してはどのようなものかはっきりとわかりませんでしたので直訳としておきます




以上の内容はhttps://tech.guitarrapc.com/entry/2013/10/25/071306より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14