Процесс запуска 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()
Другие вопросы по тегам