何らかの理由で以下のスクリプトを実行すると、$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
}
}