2013-02-25 90 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客户端的旧服务器名称与新名称不同 - 这就是脚本没有显示名称的原因!感谢格雷默重新检查这个!