2013-02-25 30 views
0

當我由於某種原因運行下面的腳本時,$ Service爲空?爲什麼我的服務變量爲空?

我知道該服務存在,但在PowerGUI腳本編輯器的變量部分中沒有任何內容出現。這與腳本中的IF-ELSE語句混淆,如果服務啓動,它會向最終用戶顯示「STARTED」。

它是服務名稱中的空間嗎?如果我只是執行自身的服務變量,然後它會顯示該服務的全部內容,所以它不喜歡它無法找到該服務..

下面是空的變量的圖片被空:

enter image description here

SCRIPT:

clear 
#$ErrorActionPreference = "silentlycontinue" 

Import-Module PSRemoteRegistry 

$Logfile = "C:\temp\netbackup_version.log" 

Function LogWrite 
{ 
    param([string]$logstring) 

    Add-Content $Logfile -Value $logstring 
} 

$computer = Get-Content -Path c:\temp\netbackup_servers1.txt 

foreach ($computer1 in $computer){ 

     $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computer1) 
     $RegKey= $Reg.OpenSubKey("SOFTWARE\\Veritas\\NetBackup\\CurrentVersion") 
     $NetbackupVersion1 = $RegKey.GetValue("PackageVersion") 

    if (test-connection $computer1 -quiet) 
    { 

    $Service = Get-WmiObject Win32_Service -Filter "Name = 'NetBackup Client Service'" -ComputerName $computer1 

      if($Service.state -eq 'Running') 
      { 
       LogWrite "$computer1 STARTED $NetbackupVersion1" 

      } 
      else 
      { 
       LogWrite "$computer1 STOPPED $NetbackupVersion1" 
      } 
    } 
    else 
    { 
     LogWrite "$computer1 is down" -foregroundcolor RED 
    } 
} 
+1

您確定可以手動運行「Get-WmiObject Win32_Service -Filter」Name ='NetBackup Client Service'「-ComputerName $ computer1'(帶有其中一個計算機名稱)嗎?找不到匹配項時,該變量爲$ null。我建議只是爲了驗證遠程處理是否正常。另外,您確定「NetBackup客戶端服務」是「名稱」而不是「DisplayName」嗎? – 2013-02-25 15:53:59

+0

賓果! Darn Netbackup .......你給了我一個想法,檢查顯示名稱與舊版本的客戶端,它被稱爲別的!我以爲他們全都是同一個名字......我想現在必須重新調整我的服務命名......謝謝你的提示! – lara400 2013-02-25 16:01:09

回答

0

不要期待舊版本的服務具有相同的服務名稱爲新的更新版本!舊Netbackup客戶端的舊服務器名稱與新名稱不同 - 這就是腳本沒有顯示名稱的原因!感謝格雷默重新檢查這個!