0

私の PowerShell スクリプトは、リモートの Windows 7 コンピューターの現在のユーザーを特定し、出力します

userId=DOMAIN\username

現在ログオンしているユーザーがいない場合、スクリプトは出力します

userId=No One Currently Logged In

また、スクリプトがリモート コンピューターの WMI にアクセスできない場合、スクリプトは出力します。

userId=CannotConnectToWMI

このスクリプトと WBEMTEST を実行して、リモート マシンで WMI にアクセスできるかどうかを確認しました。

昨日の午後、いくつかのリモート マシンで WMI にアクセスできたのに、今朝はアクセスできないので、本当に困惑しています。以下はチャートです:

スクリプトと WBEMTEST の結果

なぜこうなった?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 アドレスが別のコンピューターに切り替えられているようです。完全修飾ドメイン名で比較します。

4

2 に答える 2

0

現在、Windows 7 の IP アドレスをいくつかテストしています。問題のある IP アドレスの 1 つにリモート アクセスしたところ、Windows XP になっていることに気付きました。その後、コンピューターの IP アドレスが数日ごとに変更されることに気付きました。そのため、10.10.10.10 はある日 ComputerA.contoso.com に属し、数日後には ComputerB.contoso.com に属している可能性があります。

一連のコンピューターでテストを行う前に、テストを実行する前に完全修飾ドメイン名に従って対応する IP アドレスを見つけます。

于 2013-10-18T13:48:27.507 に答える