Entfernten Rechner mit WMI abfragen !

kornkreiszerstörer

Grünschnabel
Hi Leute,

ich bräuchte mal einen Profi-Tipp!!

Ich versuche nun schon seit längerem einen entfernten Rechner im Netzwerk mit WMI in einem VBSkript abzufragen.

- Beide Rechner laufen unter XP Prof.
- Unter beiden ist WMI installiert!
- Habe die Firewall Ports 3389 (Remote), 135 (RPC) und 445 (DCOM) auf beiden Rechnern offen!! Habe es aber auch schon mit ausgeschalteter Firewall versucht!!
- DCOM habe ich zusätzlich über "dcomcnfg" aktiviert
- WMI-Remotezugriff habe ich auf beiden Rechnern aktiviert und entsprechende Gruppenrichtlinien verfasst!!
- PING funktioniert!
- Windows-Remotedesktop fuktioniert!
- Dateifreigabe auf anderem Rechner funktioniert!!
- Habe es bisher über einen Switch und einen Router probiert!

Lokal funktioniert das Skript wunderbar! Aber eben nicht, wenn ich für den Punkt in Zeile 1 den PC Namen oder die IP eingebe!! Dann bekomme ich jedesmal eine Fehlermeldung:
Fehler: Erlaubnis verweigert.: 'GetObject'
Code: 800A0046
Quelle: Laufzeitfehler in Microsoft VBScript

Habe ein ganz einfaches Skript zum Testen verwendet:

strComputer = "."
Set wbemServices = GetObject("winmgmts:\\" & strComputer)
Set wbemObjectSet = wbemServices.InstancesOf("Win32_LogicalMemoryConfiguration")
For Each wbemObject In wbemObjectSet
WScript.Echo "Gesamter physischer Speicher (KB): " & wbemObject.TotalPhysicalMemory
Next


//////////////////////////////////////////////////////////////////////////////////////////////////////

oder auch:

//////////////////////////////////////////////////////////////////////////////////////////////////////



On Error Resume Next

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20

arrComputers = Array(".")
For Each strComputer In arrComputers
WScript.Echo
WScript.Echo "=========================================="
WScript.Echo "Computer: " & strComputer
WScript.Echo "=========================================="

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Desktop", "WQL", _
wbemFlagReturnImmediately + wbemFlagForwardOnly)

For Each objItem In colItems
WScript.Echo "BorderWidth: " & objItem.BorderWidth
WScript.Echo "Caption: " & objItem.Caption
WScript.Echo "CoolSwitch: " & objItem.CoolSwitch
WScript.Echo "CursorBlinkRate: " & objItem.CursorBlinkRate
WScript.Echo "Description: " & objItem.Description
WScript.Echo "DragFullWindows: " & objItem.DragFullWindows
WScript.Echo "GridGranularity: " & objItem.GridGranularity
WScript.Echo "IconSpacing: " & objItem.IconSpacing
WScript.Echo "IconTitleFaceName: " & objItem.IconTitleFaceName
WScript.Echo "IconTitleSize: " & objItem.IconTitleSize
WScript.Echo "IconTitleWrap: " & objItem.IconTitleWrap
WScript.Echo "Name: " & objItem.Name
WScript.Echo "Pattern: " & objItem.Pattern
WScript.Echo "ScreenSaverActive: " & objItem.ScreenSaverActive
WScript.Echo "ScreenSaverExecutable: " & objItem.ScreenSaverExecutable
WScript.Echo "ScreenSaverSecure: " & objItem.ScreenSaverSecure
WScript.Echo "ScreenSaverTimeout: " & objItem.ScreenSaverTimeout
WScript.Echo "SettingID: " & objItem.SettingID
WScript.Echo "Wallpaper: " & objItem.Wallpaper
WScript.Echo "WallpaperStretched: " & objItem.WallpaperStretched
WScript.Echo "WallpaperTiled: " & objItem.WallpaperTiled
WScript.Echo
Next
Next


//////////////////////////////////////////////////////////////////////////////////////////////////////

Kann mir jm sagen, woran es noch liegen könnte, dass ich von einem anderen Rechner im Netzwerk keine Infos bekomme

Ich bin echt ratlos!
 
Hi und willkommen im Forum

Hast du denn Rechte auf dem Rechner auf WMI zuzugreifen? Der User, mit dem du die WMI-Objekte abfragen willst, muss mindestens Benutzerrechte auf dem Zielrechner haben
 
Hallo Nico,

ja Admin-Rechte habe ich!

Habe es auch gestern spät in der Nacht noch teilweise hinbekommen...aber ich weiß nicht so ganz woran es alles lag, dass es dann doch funktionierte!

Das Wichtigste war das Skript mit Useraccount+PW! Aber geht es nicht auch irgendwie ohne Die Scripting Guys führen zum Beispiel auch öfters an, dass man in Ihre Skripts für den Punkt "." irgendeinen Rechner im LAN angeben und diesen dann abfragen kann. Aber ohne zusätzlichen account!? Evtl müsste ich irgendwie dem abzufragenden Rechner sagen, dass wenn ich (also meine IP) ihne abfragen will, dass er dies zulässt!? Hat jm ne Idee, ob das geht und wie ich das realisieren kann

Hier nochmal das Probeskript!!

/////////////////////////////////////////////////////////////////////////////////////////////////
Const WbemAuthenticationLevelPktPrivacy = 6

strComputer = "RECHNERNAME"
strNamespace = "root\cimv2"
strUser = "USERNAME" 'domäne\admin
strPassword = "PASSWORT"

Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer _
(strComputer, strNamespace, strUser, strPassword)
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy

Set colItems = objWMIService.ExecQuery _
("Select * From Win32_OperatingSystem")
For Each objItem in ColItems
Wscript.Echo strComputer & ": " & objItem.Caption
Next

/////////////////////////////////////////////////////////////////////////////////////////////////

Damit ging es! Aber auch nur bei ausgeschalteter Firewall (auf dem abzufragenden Rechner)! An welchen Ports könnte es denn noch hängen! MSDN gibt nur die an, die schon geöffnet habe!

Gruuß!!
 
Zurück