コマンドプロンプトを使用して、「同じユーザー」がターミナルサーバー上で同じプログラムを開かないようにするにはどうすればよいですか?

コマンドプロンプトを使用して、「同じユーザー」がターミナルサーバー上で同じプログラムを開かないようにするにはどうすればよいですか?

リモート デスクトップ アプリ (Server 2008) を使用するユーザーが数人おり、私が作成した .BAT ファイルを開くと、2 つのプログラムが開きます...ただし、同じプログラム (この場合は Outlook) が複数回開かないようにする必要があります...

.BAT ファイルにこの行を作成しました...

tasklist /nh /fi "imagename eq outlook.exe" | find /i "Outlook.exe" > nul ||(start /min Outlook.exe)

正常に動作します...ただし、複数のユーザーがこの「ターミナル サーバー」にログオンし、同じ .BAT ファイルを実行しているため、"ユーザー 2" がログオンしても、タスク マネージャーで "ユーザー 1" の下に既に実行中として表示されるため、Outlook は起動しません...

区別できるようにする必要があります"imagename" and "username"...つまり「ユーザー名」は%USERPROFILE%

答え1

コマンドプロンプトを使用して、「同じユーザー」がターミナルサーバー上で同じプログラムを開かないようにするにはどうすればよいですか?

複数のユーザーがこの「ターミナル サーバー」にログオンし、同じ .BAT ファイルを実行しています。そのため、「ユーザー 2」がログオンしても、タスク マネージャーの「ユーザー 1」で既に実行中として表示されるため、Outlook は起動しません。

以下のロジックを試してみてください。環境変数を使用して%Username%、そのコマンドを実行するユーザー アカウント プロファイルのユーザー名の現在のTASKLISTエントリのみを取得します。

プロセスを実行しているユーザーのみのプロセスを取得するためのタスクリストコマンド

TASKLIST /NH /FI "USERNAME eq %Username%" /FI "imagename eq outlook.exe"

例のロジックを使用する

TASKLIST /NH /FI "USERNAME eq %Username%" /FI "imagename eq outlook.exe" | find /i "Outlook.exe" > nul ||(start /min Outlook.exe)

追加の参考資料とリソース

関連情報