2015-04-02 63 views
0

基本上我想檢查並查看文本文件中的計算機是否聯機。如果他們不在線,則寫入主機「$ computer is down」。如果$計算機在線,然後檢查是否存在這個服務,如果它存在,然後寫主機「$計算機安裝,如果沒有,然後寫主機」$計算機未安裝「。測試連接似乎工作,但如果計算機網絡是他們都回寫 - 主機「$電腦安裝」即使我有一個測試機,我知道沒有這個服務的運行。PowerShell測試連接,如果服務存在使用get-service

function Get-RunService { 

$service = get-service -name ABCService 

Get-Content "C:\powershell\computers.txt" | 

    foreach {if (-not (Test-Connection -comp $_ -quiet)) 
    { 
    Write-host "$_ is down" -ForegroundColor Red 
    } 
    if ($service) 
    { 
    write-host "$_ Installed" 
    } 

else { 

Write-host "$_ Not Installed" 

} 


} 

} 

get-RunService 
+1

'$ service'只有計算機的結果。不是遠程的。你永遠不會改變它。你的括號可能沒有設置你的意圖。 – Matt 2015-04-02 13:10:12

回答

5

有一個在你的代碼的這一清理版本。

function Get-RunService { 

    Get-Content "C:\powershell\computers.txt" | 
     foreach { 
      if (-not (Test-Connection -comp $_ -quiet)){ 
       Write-host "$_ is down" -ForegroundColor Red 
      } Else { 
       $service = get-service -name ABCService -ComputerName $_ -ErrorAction SilentlyContinue 

       if ($service){ 
        write-host "$_ Installed" 
       } else { 
        Write-host "$_ Not Installed" 
       } 
      } 
     } 
} 

get-RunService 

我試圖清理如何括號中的工作。你檢查主機還活着,沒有一個Else的情況下,次分離出e服務器可以聯繫或不聯繫。請注意,ping可能會失敗,但主機可能仍然活着,並且全部取決於您的環境,但請注意可能性。也感動了$service行成foreach加入-ComputerName $_

目前你有沒有保證金錯誤與此有關。該功能可能不存在,你應該考慮到這一點。最好的建議是查看Get-Service-ErrorAction以及可能的Try/Catch塊。

+0

工作正常!非常感謝。 – MattMoo 2015-04-02 13:57:53

相關問題