ローカル ネットワーク (ワークグループ、ドメイン参加なし) 内のターゲット マシンで特別なコマンドを実行したいと考えています。
マシンは、Enable-PSremoting
Windows リモート管理を許容するように事前に構成されており、次のようにターゲット マシンでコマンドを実行できます。
コマンドは正常に動作しますが、start-process などの特殊なコマンドを開始する場合は、ローカル マシンとして実行されません。
たとえば、ローカルマシンで実行する場合:
> Start-Process -Filepath "cmd.exe"
cmdプロセスを開始します。リモートで実行すると、次のようにします
Invoke-Command -Computername "my-target-ip" -ScriptBlock {Start-Process -Filepath "cmd.exe"} -Credential get-credential
cmd ウィンドウはターゲット マシン上で実行されません。
これにより、更新の一時停止や GUI 経由の標準ブラウザ アプリの設定など、PowerShell では実行できない自動 GUI 構成を必要とする特別なパッケージをターゲット マシンにインストールできるようになります。それ以外の場合、通常の構成 (ファイアウォール設定、ファイルの書き込み、ネットワーク構成の有効化など) は正常に機能します。
どうもありがとうございます。
答え1
Invoke-Command
非対話型コマンド用です。私の記憶が正しければ、これを使用して対話型プロンプトは表示されません。もちろん、リモート コンピューターでプログラムを起動する場合は、起動する前にそのプログラムがそこに存在している必要があります。
リモートコンピュータで対話型セッションを使用する場合は、Enter-PSSession
その代わり:
Enter-PSSession -Computer "remote" -Credential (Get-Credential)
このセッション内では、本当に必要な場合は cmd プロンプトを起動できるはずです。
対話型ではない関連コマンドをいくつか実行する必要がある場合は、New-PSSession
とともに コマンドレットが役立つ可能性がありますInvoke-Command -Session $session
。