2017-02-10 12 views
2

以下のループを使用して複数のサーバーでサービスを停止しようとしています。サービスを開始するときにも同じループが正常に機能します。powershellを使用して複数のサービスでサービスを停止する

私は以下のコードがテキストの最初の行だけを読み、残りは無視する理由を理解するためにすべての調査を行っています(serverlist_prod_ovo.txtにはサーバーの一覧が含まれていますが、以下のコードは最初のサーバーのみを取り、 )しかし、それは停止するように、すべてのサーバー

スクリプトを通過起動したとき:

$computers=gc "C:\scripts\ZFA PROD Scripts\ServerList_PROD_OVO.txt" 

invoke-command -computer $computers -scriptblock{get-wmiobject -Class win32_service -Filter "name='OvCtrl'"} | foreach-object{ 
    if ($_.state -eq "Started") 
     {Stop-Service -InputObject $(Get-Service -computer $computers -DisplayName 'OvCtrl');} 
    else 
     {write-host "'HP OpenView Ctrl Service' is already Stopped in "$_.PSComputerName -ForegroundColor green} 
    } 

を私が間違っているかを理解するには、ここに私を助けてください。

おかげ

答えて

0

あなたのforeachのは、実際にコンピュータのリストを反復されていません。

これはあなたの仕事をする必要があります。

$computers=gc "C:\scripts\ZFA PROD Scripts\ServerList_PROD_OVO.txt" 

foreach($comp in $computers) 
{ 
    If((get-wmiobject -ComputerName $comp -Class win32_service -Filter "name='OvCtrl'").State -eq "Started") 
    { 
    Get-Service -ComputerName $comp -DisplayName 'OvCtrl' | Stop-Service -Force 
    } 
    else 
    { 
    write-host "'HP OpenView Ctrl Service' is already Stopped in "$_.PSComputerName -ForegroundColor green 
    } 

} 

はそれがお役に立てば幸いです。

+0

ヘルプRanadip Duttaありがとうございます。 –

+0

問題のある相手ではありません。あなたを助けてうれしい。 @SriL –

関連する問題