PowerShell CoreのExperimental Featureを試してみた
しばたです。
現在最新のプレビュー版であるPowerShell Core 6.2.0-preview.3から試験的な機能(Experimental Feature)を有効・無効化するためのコマンドレットが導入されました。
本記事ではこのコマンドレットを試してみます。
PowerShell Coreのインストール
PowerShell Coreのインストール手順は端折ります。
GitHubのリリースページから最新のプレビュー版をダウンロードしてインストールしてください。
Get-ExperimentalFeature
Get-ExperimentalFeature
コマンドレットで現在利用可能な試験的な機能を確認できます。
# 今回は結果を見やすくするために Format-List しておく
Get-ExperimentalFeature | Format-List
結果は上図の様になり、2019年1月13日現時点で利用可能な試験的な機能は
- Batch implicit remoting proxy commands to improve performance
の1つだけとなります。
Batch implicit remoting proxy commands to improve performance
この機能はImplict Remotingにおけるコマンド実行で都度ローカル⇔リモート間の通信が発生してしまうのを改善し、リモート側で複数のコマンドが連続で実行される場合はまとめて実行することでパフォーマンスを改善するものになります。
詳細は機能のプルリクエストに記載されていますので気になる人はこちらをご覧ください。
この機能は検証が非常に難しく、また、目に見えて面白い結果にならなかったので、本記事では動作検証までは触れず機能の紹介だけに留めておきます。
今後予定される試験的な機能
現時点では導入が確定している試験的な機能はありません。
RFCで提案されているものから随時増えていくものと予想されます。
Enable-ExperimentalFeature
Enable-ExperimentalFeature
は試験的な機能を有効にするコマンドレットです。
-Name
パラメーターに有効にしたい機能名を指定します。
また、-Scope
パラメーターがあり、
- CurrentUser : 現在のユーザーのみ対象 (既定)
- AllUsers : すべてのユーザーが対象
と機能の適用範囲を指定できます。
Enable-ExperimentalFeature -Name PSImplicitRemotingBatching -Scope CurrentUser
実行結果は以下の様になりPowerShellコンソールを再起動すると有効にした機能が適用されます。
再起動後にあらためてGet-ExperimentalFeature
を実行するとEnabled
プロパティがTrue
に変わっていることが確認できます。
Disable-ExperimentalFeature
試験的な機能をやめたい場合はDisable-ExperimentalFeature
コマンドレットを使います。
Enable-ExperimentalFeature
と同様に-Name
、-Scope
パラメーターを指定します。
Disable-ExperimentalFeature -Name PSImplicitRemotingBatching -Scope CurrentUser
実行結果は以下の様になり、コンソールを再起動すると変更が反映されます。
設定の保存場所
Enable-ExperimentalFeature
やDisable-ExperimentalFeature
で変更した設定はPowerShell Coreの設定ファイルであるpowershell.config.json
に保存されます。
この設定ファイルは、全ユーザーの設定は$PSHOME
に、ユーザー毎の設定は[マイドキュメント]\PowerShell (Windowsの場合)
か~/.config/powershell/ (Linux/macOSの場合)
に保存されます。
試験的な機能を有効にすると以下の様なエントリが設定ファイルに追記されます。
{"ExperimentalFeatures":["PSImplicitRemotingBatching"]}
最後に
ざっとこんな感じです。
まだ試すことのできる機能は少ないですが今後増えていくと思われますので面白そうな機能が出た際は実際に試していきたいです。