5

リモート コンピューターで PSSession を作成し、その所有に入りました。そのセッション内から、start-process を使用してメモ帳を起動します。get-process コマンドと、リモート コンピューターの taskmgr を使用して、メモ帳が実行されていることを確認できます。ただし、プロセスの GUI 側は表示されません。これは私が使用してきたシーケンスです:

$server = New-PSSession -ComputerName myserver -Credential mycreds
Enter-PSSession $server

[$server]: PS C:\>Start-Process notepad -Wait -WindowStyle Maximized

プロセスは実行中ですが、RDP でボックスに接続している間、メモ帳が開きません。サーバーからメモ帳を開くと、新しいメモ帳プロセスが開始されます。また、次のように動詞パラメーターを使用してみました。

[$server]: PS C:\>Start-Process notepad -Wait -WindowStyle Maximized -Verb Open

同じ結果です...プロセスは開始しますが、メモ帳は表示されません。ボックスにリモート接続している間(ただし、ローカルホストから発行された状態)、およびサーバーにリモート接続する前にこれを試しました。

4

4 に答える 4

12

これは、リモート マシン上の PowerShell セッションが、目に見えるデスクトップではなく、目に見えないシステム デスクトップに移動するためです。PowerShell リモート セッションの受信側は Windows サービスです。プロセスは開始されますが、あなたも他の人もそれを見ることはできません。

考えてみれば、複数のユーザーが同じマシンに RDP で接続できるため、リモート PowerShell セッションが最終的にユーザーのデスクトップに表示されると想定する理由はまったくありません。実際には、ほとんどすべての場合、とにかくそれを望まないでしょう。

-i パラメーターを指定したpsexecは、必要なことを行うことができますが、表示するセッション (ユーザー) を指定する必要があります。

于 2013-09-11T19:03:07.560 に答える
3

RDPを使用New-PSSessionして同じコンピューターに接続すると、実際には 2 つの別個の異なるユーザー ログイン セッションが使用されます。したがって、PSSession で開始した Notepad.exe プロセスは、RDP セッションからは見えません (タスク マネージャーまたは を介し​​て実行中の別のプロセスを除くget-process)。

サーバーに RDP 接続したら (投稿に書いたことを実行した後)、そこから別のメモ帳インスタンスを開始します。次に、PowerShell にドロップして、これを実行します。get-process -name notepad |select name,processid

2 つのインスタンスがあり、それぞれが異なるセッションにあることに注意してください。

タスク マネージャーを開き、ユーザー セッションを確認します。RDP セッションは、おそらくセッション 1 としてリストされます。

メモ帳を終了して、もう一度実行get-processします。1 つのインスタンスが表示されますが、セッション 0 のものです。これは、リモート PSSession で作成したものです。

于 2013-09-11T19:04:53.890 に答える