PowerShell - Как запустить команду, которая зависит от запуска службы? - PullRequest
0 голосов
/ 05 марта 2019

У меня есть скрипт, где есть возможность отправить электронное письмо; это требует, чтобы stunnel работал. Если служба работает, а затем я выполняю сценарий, он отлично работает:

cmd /c "blat -subject `"Test`" -body `"Test`" -ss -base64 -html -r -noh2 -to $emailto -u $username -attach $anexo -pw $password -f $username -server 127.0.0.1:25 -debug -log $blatLog"

Но, если я попытаюсь запустить службу в скрипте, она не будет работать, никаких ошибок, просто электронное письмо не будет отправлено.

Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -Command `"
    Start-Service stunnel;
    cmd /c ""blat -subject `"Hello`" -body `"Hi`" -ss -base64 -html -r -noh2 -to $emailto -u $username -pw $password -f $username -server 127.0.0.1:25 -debug"" | Out-Null;
    Stop-Service stunnel;
`"" -Wait -Verb RunAs

Скрипт делает много вещей, и ни один из них не требует запуска администратора, кроме запуска службы. Я знаю, что могу сохранить службу в рабочем состоянии, но почему она не работает?

1 Ответ

0 голосов
/ 06 марта 2019

Итак, вот решение, которое я придумал:

$ScriptBlock = {
    function CheckStunnel {
        $t = New-Object System.Net.Sockets.TcpClient '127.0.0.1', 25;
        while ($t.Connected -ne 'True') {
            If ((Get-Service stunnel).Status -ne 'Running') { Start-Service stunnel }
            Start-Sleep -seconds 3;
            $t = New-Object System.Net.Sockets.TcpClient '127.0.0.1', 25;
        }
    }
}
Start-Process PowerShell "-NoProfile -ExecutionPolicy Bypass -Command `"
    & {$ScriptBlock CheckStunnel}
    Blat -subject `"Test`" -body `"Test`" -ss -base64 -html -r -noh2 -to $emailto -u $username -attach $anexo -pw $password -f $username -server 127.0.0.1:25 -debug -log $blatLog;
    if ($LASTEXITCODE -eq 0) { Stop-Service stunnel }
`"" -Verb RunAs

Так как функция stunnel состоит в том, чтобы открыть порт, тогда я просто должен проверить, открыт ли порт. Сейчас работает нормально.

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...