Я запускаю задачу в VSTS/Azure DevOps
конвейере, чтобы остановить и удалить список оконных служб.То, что я делаю здесь, это выполнение кода ниже и использование метода сна, чтобы убедиться, что вышеуказанный метод был завершен.
Function DeleteService([string] $ServiceName)
{
TRY{
$Service = Get-WmiObject -Class Win32_Service -Filter "Name='$ServiceName'"
if ($Service -ne $null)
{
Write-Output "Stopping window service - '$ServiceName'"
$Service.StopService()
# Adding a sleep for ten seconds to let the process stop the service completely
Start-Sleep -m 10000
Write-Output "Stopping Window service - '$ServiceName' completed"
Write-Output "Uninstalling window service - '$ServiceName'"
$Service.Delete()
# Adding a sleep for ten seconds to let the process stop the service completely
Start-Sleep -m 10000
Write-Output "Uninstalling window service - '$ServiceName' completed"
}
else
{
Write-Output "Window service - '$ServiceName' does not exist. Uninstallation Complete"
}
}
CATCH
{
$ErrorMessage = $_.Exception.Message
Write-Error " ********************** Error in uninstalling window service : $ServiceName with exception $ErrorMessage ********************** "
}
}
Нет ли лучшего способа в PowerShell, который подтвердил бы, что служба остановлена, теперь я могу продолжить.Так что мне не нужно помещать такие патчи в код.
Потому что, как я изучил на сайте Microsoft , эти команды отправляют сообщение на Windows Service Controller
.Они не завершают задачу.Поэтому я сомневаюсь, что как написать такой код, который будет работать синхронно с правильным своевременным выполнением.