Процесс запуска PowerShell 1.0 не ожидает завершения при выходе пользователя из системы
В настоящее время я пытаюсь использовать Powershell для подключения к удаленному рабочему столу, запуска программы на этом рабочем столе и выхода из системы. Затем я проверяю результаты выполнения этой команды через файловую папку. По сути это означает, что PowerShell должен дождаться завершения процесса, прежде чем продолжить.
После прочтения я пытался использовать опцию Start-Process -Wait, чтобы убедиться, что он ожидает запуска процесса. Однако этот сценарий должен быть запущен как запланированное задание, и кажется, что всякий раз, когда сценарий запускается, когда пользователь не вошел в систему, -wait не работает, и сценарий продолжается без завершения процесса. Я пробовал несколько разных вариантов ожидания, но, очевидно, мне нужно запустить запланированное задание, пока пользователь выходит из системы, чтобы протестировать его, и тестирование становится утомительным. Вот моя текущая строка кода, выполняющая это:
$proc = $(start-process $path -Wait)
Обратите внимание, что я пытался использовать команду -NoNewWindow, но она недоступна в моей версии PowerShell.
У кого-нибудь есть другие идеи, как заставить его ждать процесса?
1 ответ
У вас все еще есть.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()