2017-02-06 8 views
0

PS Сценарий СценарийPS скрипт для проверки состояния службы и установите новый сервис Windows

1-> Check if service exists 
    -> if doesn't exists 
     -> copy item and install windows service and start. 
    -> If exists 
     -> Stop Windows service & delete it and copy item from folder and Install & start the service. 

Ниже мой сценарий

$service = Get-Service -Name XXX -Computername YYY 
if($service.Status -eq $NULL) 
{ 
    Copy-Item "C:\location\*" "\\yyy\d$\Location" -Force -Recurse 
    sc.exe \\yyy create xxx start=auto DisplayName="value" binPath= D:\Build\test.exe 
    sc.exe \\yyy description xxx "value" 
    sc.exe \\yyy start xxx 
    Write-Host "xxx STARTED" 
} 
else 
{ 
    sc.exe \\yyy stop xxx 
    Write-Host "xxx STOPPED" 
    sc.exe \\yyy delete xxx 
    Write-Host "xxx DELETED" 
    Copy-Item "C:\Location\*" "\\yyy\d$\Location" -Force -Recurse 
    sc.exe \\yyy create xxx start=auto DisplayName="value" binPath= D:\Build\test.exe 
    sc.exe \\yyy description xxx "value" 
    sc.exe \\yyy start xxx 
    Write-Host "xxx STARTED" 
} 

ли мой подход правильно и я не вижу ошибку, если нет имя службы XXX. Как переопределить эту ошибку и продолжить с помощью оператора If.

error-

Get-Service : Cannot find any service with service name 'Spoole'. 
At line:1 char:12 
+ $service = Get-Service -Name Spoole 
+   ~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : ObjectNotFound: (Spoole:String) [Get-Service], ServiceCommandException 
    + FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand 
+0

Это похоже на правильный подход, единственное, чего не хватает - обработка ошибок, ваш скрипт все равно будет писать 'xxx STARTED', даже если' sc.exe' забросил ошибку, также есть [New-Service] (https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.management/new-service), не уверен, когда это произойдет. По моему мнению, этот вопрос слишком широк, чтобы на него можно было ответить, ты – 4c74356b41

ответ

1

Вы можете использовать

$service = Get-Service -Name XXX -Computername YYY -ErrorAction SilentlyContinue 

Чтобы подавить ошибку.

 Смежные вопросы

  • Нет связанных вопросов^_^