7

現在、Powershell を使用してリモート デスクトップに接続し、そのデスクトップでプログラムを実行してからログオフしようとしています。次に、ファイル共有全体でそのコマンドを実行したときの出力を確認しています。基本的にこれは、PowerShell が処理を続行する前にプロセスが完了するまで待機する必要があることを意味します。

読んだ後、 Start-Process -Wait オプションを使用して、プロセスが実行されるのを確実に待機しようとしました。ただし、このスクリプトはスケジュールされたタスクとして実行する必要があり、ユーザーがログインしていないときにスクリプトを実行すると、-wait が機能せず、プロセスが完了せずにスクリプトが続行されるようです。待機するためのいくつかの異なるオプションを試しましたが、明らかに、ユーザーがログオフしている間にスケジュールされたタスクを実行してテストする必要があり、テストは疲れ果てます。これを実行する現在のコード行は次のとおりです。

$proc = $(start-process $path -Wait)

-NoNewWindow コマンドを使用してみましたが、私のバージョンの PowerShell では使用できないことに注意してください。

プロセスを待機させる方法について他にアイデアはありますか?

4

1 に答える 1

3

プロセスを開始し、彼の死を待つ .net の方法がまだあります。Processクラス、メソッド、およびプロパティを見てください。

## Start a process
$Proc = [Diagnostics.Process]::Start("calc.exe")

## Start a processus with param
$Proc = [Diagnostics.Process]::Start("notepad.exe", "Fic.txt")

## Wait for a process death
$Proc.WaitForExit()

開始環境を構成することもできます

$credential = Get-Credential
$startInfo = New-Object Diagnostics.ProcessStartInfo
$startInfo.UserName = $credential.Username
$startInfo.Password = $credential.Password
$startInfo.Filename = "powershell"

## Start a process with StartInfo 
$startInfo.UseShellExecute = $false
$Proc = [Diagnostics.Process]::Start($startInfo)

## Stop the process
$Proc.Kill()
于 2013-09-10T06:24:46.910 に答える