Powershell 为什么我的服务变量为空?

Powershell 为什么我的服务变量为空?,powershell,powershell-2.0,Powershell,Powershell 2.0,当我出于某种原因运行下面的脚本时,$服务为空 我知道该服务存在,但在PowerGUI脚本编辑器的变量部分中没有显示任何内容。这会弄乱脚本中的IF-ELSE语句,如果服务启动,它会向最终用户显示“started” 是服务名称中的空格吗?如果我只是单独执行服务变量,那么它会显示服务的完整内容,因此它不会像找不到服务一样 以下是空变量为空的图片: 脚本: clear #$ErrorActionPreference = "silentlycontinue" Import-Module PSRemot

当我出于某种原因运行下面的脚本时,$服务为空

我知道该服务存在,但在PowerGUI脚本编辑器的变量部分中没有显示任何内容。这会弄乱脚本中的IF-ELSE语句,如果服务启动,它会向最终用户显示“started”

是服务名称中的空格吗?如果我只是单独执行服务变量,那么它会显示服务的完整内容,因此它不会像找不到服务一样

以下是空变量为空的图片:

脚本:

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客户端的旧服务器与新服务器具有不同的名称-这就是脚本未显示名称的原因!感谢Graimer再次检查这个

您确定可以手动运行
获取WmiObject Win32_服务-Filter“Name='NetBackup客户端服务”-ComputerName$computer1
(使用其中一个ComputerName)?未找到匹配项时,变量为$null。我建议这样做只是为了验证远程处理是否有效。另外,您是否确定“NetBackup客户端服务”是
Name
,而不是
DisplayName
?宾果!该死的Netbackup……你给了我一个主意,让我对照旧版本的客户端检查显示名称,它被称为其他东西!我以为他们都是同一个名字…我想我现在必须重新调整我的服务命名…谢谢你的提示!