しばたテックブログスマートフォン用の表示で見るしばたテックブログPowerShellを中心に気分で書いている技術ブログです。Remotingにおける改善点について解説します。Remotingについては少しボリュームが増えたので本エントリで先出しします。2016以降で利用でき、ホストから仮想マシンおよびコンテナへネットワークを介さず直接接続する機能になります。利用可能なホストOSではリモート操作系のコマンドレットに-VMName、-VMId、-VMGuid、-ContainerIdのパラメーターが付いており、これらのパラメーターを指定することで直接ゲストに接続します。Service(HCS)のAPI(例えばHcsCreateProcessなど)を使ってコンテナ内部のPowerShellを起動したプロセス間通信を行っています。6.1での改善点について説明します。Directで起動するPowerShellのプロセスはpowershell.exeで決め打ちされていました。6.1では、最初にpwsh.exeの起動を試みpwsh.exeが無ければpowershell.exeを起動する様に改善されています。2019*1で以下のコマンドを試してみます。Containerが起動された状態です。PowerShell(powershell.exe)が実行されていることが分かります。Core(pwsh.exe)が起動され改善されていることがわかります。Coreと通信する場合は-ConfigurationNameパラメーターを明示してやる必要があります。こちらについては次項で説明します。6.1のリリースバージョンではコンテナ接続に関するバグ(#5794)があるため、この機能を試すには最新のmasterから自分でビルドする必要があります。6.1.1)に取り込まれると思いますので、ビルド環境のない方はそれまでお待ちください。6.2.0で反映されました。余談2当初この点についてドキュメントの内容に疑念があったためIssueを上げたところ回答と改善をしてもらえました。github.comあまりいないとは思いますが改善前のドキュメントを見ている人向けの補足です。Remotingでは接続対象となるホストに接続先(エンドポイント)が存在します。PowerShellにおいては下図の様に4つのエンドポイントがあることが分かります。6.1では以下の2つのエンドポイントが作成されます。バージョンを厳密に指定したエンドポイントGet-PSSessionConfigurationで確認するとこんな感じです。Remotingを有効にした場合はプレビューバージョン向けの2つのエンドポイントが追加される予定となっています。AccessAllowedこれにより安定版とプレビュー版のエンドポイントを分けて利用できるというのが今回の改善点になります。接続する側の設定について補足として接続する側について触れておきます。Coreどちらでも変わりません。PowerShellが利用されます。Remotingで接続する場合は-ConfigurationNameパラメーターを使って接続するエンドポイントを明示してやる必要があります。Invoke-Commandであれば以下の様にしてやります。SSHでuser@host:port形式の接続が可能になりましたssh.exeといったSSHクライアントで使われるuser@host:port形式の接続がコマンドレットでもサポートされました。SSHでは-HostNameパラメーターを使用して接続先を決めますが、ここに上記の形式を指定できます。2019でなければなりません*2:環境構築の手順は端折ります。Shell内のPowerShellの今後について元ネタはこちら。広告スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。