Сценарий Windows PowerShell, запущенный PSExec, не завершает процесс Powershell после его завершения - PullRequest
1 голос
/ 23 октября 2010

Мне нужно выполнить ряд задач на нескольких серверах Windows 2008, которым требуются повышенные разрешения, и поэтому мне пришлось создать серию запланированных задач, которые я запускаю через psexec. Поскольку они должны выполняться последовательно, я нашел и изменил сценарий powershell, который «останавливается», пока запланированные задачи не будут выполнены на удаленных машинах. У меня проблема в том, что когда я запускаю сценарий с помощью psexec на удаленной машине, когда он завершает работу (на это указывает сообщение в выводе консоли), PowerShell.exe не завершается корректно, а просто зависает и удерживает весь процесс. Мне нужно PowerShell для выхода после завершения сценария задержки, но даже с ключевым словом exit в конце он остается в памяти и не позволяет завершить процесс. Я не очень опытен с PowerShell, поэтому я приложу свой сценарий на случай, если я сделаю что-то глупое:

while($true) {
$status = schtasks /query /tn "AutoDeploy"| select-string -patt "AutoDeploy"
if($status.tostring().substring(64,7) -eq "Running") { "Waiting for task to complete..." } else { break }
start-sleep -s 5
}
"Task complete."
exit

Заранее благодарим за понимание.

1 Ответ

1 голос
/ 23 октября 2010

Это работает для меня (используя другое имя задачи) и не вешает psexec:

$taskName = "AutoDeploy"
while (1)
{
    $stat = schtasks /query /tn $taskName | 
                Select-String "$taskName.*?\s(\w+)\s*$" | 
                Foreach {$_.Matches[0].Groups[1].value}
    if ($stat -ne 'Running')
    {
        "Task completed"
        break
    }
    "Waiting for task to complete"
    Start-Sleep 5
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...