Windows Server 2025からOpenSSHがデフォルトでインストールされています。

Windows 用 OpenSSH の概要
Windows 用 OpenSSH Client および Server を使用してリモート コンピューターをインストールしてリモート コンピューターに接続する方法について説明します。
これを利用すれば管理サーバからPowershellで情報取得や変更作業をできるんじゃないかと期待していました。
いつものようにVirtualbox上のWindows Server 2025に対して何ができるか検証していきます。
まずはGet-ChildItemは問題なしです。
※事前にSSH Serverの開始と公開鍵の配置は実施済みです。
ssh Administrator@192.168.56.101 -i C:\test powershell.exe -Command "Get-ChildItem"
ディレクトリ: C:\Users\Administrator
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 2025/07/19 4:49 Contacts
d-r--- 2025/07/19 9:54 Desktop
d-r--- 2025/07/19 4:49 Documents
d-r--- 2025/07/19 4:49 Downloads
d-r--- 2025/07/26 8:00 Favorites
d-r--- 2025/07/19 4:49 Links
d-r--- 2025/07/19 4:49 Music
d-r--- 2025/07/19 4:49 Pictures
d-r--- 2025/07/19 4:49 Saved Games
d-r--- 2025/07/19 4:49 Searches
d-r--- 2025/07/19 4:49 Videos
ではNameだけ取り出してみましょう。
ssh Administrator@192.168.56.101 -i C:\test powershell.exe -Command "Get-ChildItem | Select-Object Name"
ssh : 'Select-Object' は、内部コマンドまたは外部コマンド、
発生場所 行:1 文字:1
+ ssh Administrator@192.168.56.101 -i C:\test powershell.exe -Command " ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ('Select-Object' は、内部コマンドまたは外部コマンド、:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
エラーになってしまいました。
恐らくパイプの処理がローカルで実行するような動作になっていないのでしょう。
また、変数に入れたとしてもGet-memberで調べるとTypeName: System.Stringと表示されているので、ただの文字列になっています。
現段階だと単純なコマンドは可能ですが、パイプを利用した複雑な利用は今のところ出来ないように思えます。
ただ、パイプを利用しないコマンドであれば可能であるため、設定変更コマンドを実施するのであれば少しは役立つかも?というところですね。
リモートから管理するとしたら、事前にスクリプトを配置して実行する形か、WinRMという機能があるのでこちらを利用するかですね。
WinRMを利用するのならChefやAnsibleによる構成管理もできるので、素直にWinRMを有効にほうが良いかもしれません。

コメント