私の PowerShell スクリプトは、リモートの Windows 7 コンピューターの現在のユーザーを特定し、出力します
userId=DOMAIN\username
現在ログオンしているユーザーがいない場合、スクリプトは出力します
userId=No One Currently Logged In
また、スクリプトがリモート コンピューターの WMI にアクセスできない場合、スクリプトは出力します。
userId=CannotConnectToWMI
このスクリプトと WBEMTEST を実行して、リモート マシンで WMI にアクセスできるかどうかを確認しました。
昨日の午後、いくつかのリモート マシンで WMI にアクセスできたのに、今朝はアクセスできないので、本当に困惑しています。以下はチャートです:
なぜこうなった?WMI が常にアクセス可能であることを確認するにはどうすればよいですか? 昨日、WMI に関する別の質問を投稿しました。
助けてください
@vonPryz
スクリプトには Test-Connection があります。以下はスクリプト全体です
$line_array = @()
$multi_array = @()
[hashtable]$my_hash = @{}
$Sender_IP = $NULL
$bios = $NULL
$wmi = $NULL
foreach ($i in $args){
$line_array+= $i.split(" ")
}
foreach ($j in $line_array){
$multi_array += ,@($j.split("="))
}
foreach ($k in $multi_array){
$my_hash.add($k[0],$k[1])
}
$Sender_IP = $my_hash.Get_Item("sender-ip")
try{
Test-Connection $Sender_IP -count 1 -ErrorAction Stop | out-null
}
catch [Exception]
{
$userId = "userId=CannotPing"
return $userId
}
try{
$wmi = gwmi -class win32_computerSystem -computer $Sender_IP -ErrorAction Stop
}
catch [Exception]{
$userId = "userId=CannotConnectToWMI"
return $userId
}
try{
$userId = ($wmi).username
}
catch [Exception]{
$userId = "userId=CannotFindLastUserLoggedOn"
return $userId
}
if ($userId -ne $NULL){
$userID = "userId="+$userId
return $userId
}
elseif ($userID -eq $NULL)
{
$userId = "userId=No One Currently Logged In"
return $userId
}
編集
これらのコンピューターにリモート接続して DCOM のアクセス許可を確認していたところ、そのうちの 1 台が Windows XP になっていることに気付きました。IP アドレスが別のコンピューターに切り替えられているようです。完全修飾ドメイン名で比較します。