为什么我的服务变量为空?
问题描述:
当我由于某种原因运行下面的脚本时,$ Service为空?为什么我的服务变量为空?
我知道该服务存在,但在PowerGUI脚本编辑器的变量部分中没有任何内容出现。这与脚本中的IF-ELSE语句混淆,如果服务启动,它会向最终用户显示“STARTED”。
它是服务名称中的空间吗?如果我只是执行自身的服务变量,然后它会显示该服务的全部内容,所以它不喜欢它无法找到该服务..
下面是空的变量的图片被空:
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
}
}
答
不要期待旧版本的服务具有相同的服务名称为新的更新版本!旧Netbackup客户端的旧服务器名称与新名称不同 - 这就是脚本没有显示名称的原因!感谢格雷默重新检查这个!
您确定可以手动运行“Get-WmiObject Win32_Service -Filter”Name ='NetBackup Client Service'“-ComputerName $ computer1'(带有其中一个计算机名称)吗?找不到匹配项时,该变量为$ null。我建议只是为了验证远程处理是否正常。另外,您确定“NetBackup客户端服务”是“名称”而不是“DisplayName”吗? – 2013-02-25 15:53:59
宾果! Darn Netbackup .......你给了我一个想法,检查显示名称与旧版本的客户端,它被称为别的!我以为他们全都是同一个名字......我想现在必须重新调整我的服务命名......谢谢你的提示! – lara400 2013-02-25 16:01:09