2016-10-18 17 views
1

複数のサービスを停止し、サービスが正しく停止しているかどうかを確認してから、複数のバッチファイルを実行してください。バッチジョブが完了したら、最初に停止したサービスを再開してください。私は次のスクリプトを開始しましたが、さらに進むことはできませんでした。サービスを停止し、バッチファイルを実行してからサービスを開始する

#Define Services 
$service1 = 'StiSvc' 
$service2 = 'AdobeARMservice' 
$services = @(
    $service1, 
    $service2 
) 

#Stop Services 
Get-Service | 
    Where { $services -contains $_.Name } | 
    Foreach { 
    $_ | Stop-Service 
    } 

#Verify Services 
Get-Service | 
    Where { $services -contains $_.Name } | 
    Foreach { 
    if ((Get-Service $_.Name).Status -eq "stopped") { 
     Write-Host 'Service Stop Pass (0)' 
    } else { 
     Write-Host 'Service Stop Failed (1000)'; 
     exit '1000' 
    } 
    } 

#Start batch 
if ($services.Status -eq "Stopped") { 
    Start-Process "cmd.exe" "/c C:\download\hello.bat" 
} else { 
    Start-Sleep -s 10 
} 
+0

実際の質問は何ですか? – Sean

+0

あなたの質問は何ですか?期待どおりに動作しないのは何ですか?あなたは "それ以上に行くことができませんでした" ... *どのように?* –

+0

期待通りに動作しません。サービスは停止しますが、バッチファイルは起動していません。 – FrenchITGuy

答えて

1

次のように動作するはずです:

$services = 'StiSvc', 'AdobeARMservice' 

Stop-Service $services -ErrorAction Stop 

& 'C:\download\hello.bat' 
& 'C:\path\to\other.cmd' 
#... 

Start-Service $services 

を、それは、あなたが正確に失敗し、どのようにかについてより多くの情報を提供する必要がない場合。すべてのエラーメッセージとステータスメッセージを含めます。

0

ありがとう、 次のようにスクリプトを変更しました。スクリプトは2つのサービスを停止します.2つのサービスが停止すると、バッチファイルが開始されます。

#Stop Services 

Get-Service StiSvc, AdobeARMservice | Stop-Service 

#Verify Services 

if (((Get-Service StiSvc).Status -eq "stopped") -and 
((Get-Service AdobeARMservice).Status -eq "stopped")) 

# Start batch 

{Start-Process "cmd.exe" "/c C:\download\hello.bat"} 

私はスクリプトを改善するために取り組んでいます。私はあなたにできるだけ早く戻ってきます。 よろしくお願いします。

関連する問題