次のようにリモート PowerShell セッションを開始すると、
Enter-PSSession -ComputerName somecomputer
次に、長時間実行されるプロセスを実行します。
[somecomputer]: PS C:\>
C:\SomeApp\DoSomething.exe
ローカル マシンのネットワーク停止や再起動など、何らかの理由でリモート セッションが切断された場合、コマンドがサーバー上で完了することを保証する方法はありますか?
私が見たところ、PS セッションが終了するとすぐに消えるようです。 も試してみましたStart-Process
が、同じように動作するようです。
RDP なしでサーバー上で何かを実行しようとしています。まだ PowerShell の初心者なので、見落としていることがたくさんあると思います。Win10、PowerShell 7 を使用して Windows Server 2016 に接続していますが、どこでも同じだと思います。
答え1
あなたが探しているのはNew-PSsesion
Enter-PSSession: Starts a temporary interactive session with a remote computer. You can have only one interactive session at a time using Enter-PSSession. Exiting the session destroys it.
New-PSSession: Creates a PERSISTENT connection to a local or remote computer. Exiting the session does not destroy it, it is still available to connect to again unless you do something like Disconnect-PSSession or it times out.
Furthermore, with New-PSSession you can assign the session a Name or to a variable for easier re-use, etc.
答え2
新しいセッションはまったく必要ないようで、正しい構文だけが必要です。
Invoke-Command `
-ComputerName somecomputer `
-AsJob `
-ScriptBlock {& 'C:\SomeApp\DoSomething.exe'}
パラメータ-AsJob
はコマンドをバックグラウンド サービスとして実行します。-ScriptBlock
パラメータを使用すると、exe を実行できます。