我的PowerShell脚本确定远程Windows 7计算机,将输出昨天下午我能够访问WMI,今天早上我无法访问WMI,反之亦然
userId=DOMAIN\username
的当前用户如果没有用户当前登录,该脚本将输出
userId=No One Currently Logged In
如果脚本无法访问远程计算机的WMI,脚本将输出
userId=CannotConnectToWMI
我运行脚本以及运行WBEMTEST以确认是否可以在远程计算机上访问WMI。
我真的很困惑,因为昨天下午,我能够在几台远程机器上访问WMI,今天早上我不能。以下是图表:
这究竟是为什么? 如何确保WMI始终可用?昨天我给另一个问题有关WMI,https://stackoverflow.com/questions/19409747/wbemtest-to-windows-7-says-the-rpc-server-is-unavailable
请帮
@vonPryz
该脚本试连接。下面是整个脚本
$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权限,然后我意识到,他们中的一个变成了Windows XP中。看来,IP地址正在切换到不同的计算机。我将根据完全合格的域名进行比较。
呃,网络不可靠?电脑发臭?火星与木星一致?蜘蛛正在下载热太监的照片? – Will
组策略是否与这些机器上的DCOM权限混淆? – mjolinor
这些远程机器是否在线?上电了?你看过他们,看看昨天以来发生了什么变化? – alroc