0

何らかの理由で以下のスクリプトを実行すると、$Service が null になりますか?

サービスが存在することはわかっていますが、PowerGUI Script Editor の変数セクションに何も表示されません。これは、サービスが開始された場合にエンド ユーザーに「STARTED」と表示されるスクリプトの IF-ELSE ステートメントを台無しにしています。

サービス名のスペースですか?サービス変数を単独で実行した場合、サービスの完全な内容が表示されるため、サービスが見つからないわけではありません..

NULL 変数が null である図を次に示します。

ここに画像の説明を入力

脚本:

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
    }
}
4

1 に答える 1

0

古いバージョンのサービスが、新しく更新されたバージョンと同じサービス名を持つことを期待しないでください。古いNetbackupクライアントを持つ古いサーバーは、新しいサーバーとは異なる名前を持っています。そのため、スクリプトは名前を表示していませんでした。Graimerがこれを再確認してくれてありがとう!

于 2013-02-25T16:03:05.360 に答える