www.IT-Visions.de-Diskussionsforen (Version 2.1)
(Diese Seite wurde noch nicht auf das neue Layout umgestellt!)


Diese Foren stehen den Lesern unserer Bücher und allen anderen registrieren Benutzern dieser Website zur Verfügung. Wir würden uns freuen, wenn viele Nutzer dieser Website hier nicht nur Fragen stellen, sondern auch die Fragen anderer Nutzer beantworten. Diese Foren sind ein ehrenamtlicher, nicht-kommerzieller, unmoderierter Community-Dienst von www.IT-Visions.de. Wenn Sie kommerzielle Unterstützung für .NET/Scripting/PowerShell suchen, schauen Sie bitte auf unser Support-Angebot und unsere Schulungsangebote für Scripting und Schulungsangebote für .NET.



Mit WMI auf entfernte Hosts zugreifen
Autor:  PhilippThomas
E-mail:  Antworten bitte nur in das Forum!
Datum:  11.01.2009 12:38:04
Subject:  Mit WMI auf entfernte Hosts zugreifen
Bezug zum Buch: 
Message:  Hallo,

ich habe ein Script erstellt, welches als Grundlage die Scripte aus dem Buch Windows Scripting lernen hat. Ich möchte die installierten Programme und Dienste eines Rechner auslesen.

Auf dem Rechner auf dem ich das Script erstellt habe, funktioniert das recht gut. Sobald ich aber (per Liste) auf mehrere Rechner zugreifen will, bekomme ich die Meldung, dass der Remote-Zugriff nicht möglich ist (Host nicht erreichbar).

Meine Frage ist, liegt es daran, dass ich keine Rechte auf diesen Rechenr habe?

Leider haben wir keine Domäne. Ich wollte das Script von meinem Rechner aus ausführen (dort bin ich als Admin angemeldet). Wahrscheinlich komme ich deshalb nicht auf die anderen Rechner drauf, oder?

anbei das Script (in auszügen)

inputfile = "host.txt"
outputfile = "softwareinventar.csv"



' --- Global benötigtes Objekt
Set FSO = CreateObject("Scripting.FileSystemObject")

' --- Ermittlung der Pfade
inputfile = GetCurrentPfad & "\" & inputfile
outputfile = GetCurrentPfad & "\" & outputfile


' --- Auslesen der computerliste
Set TX = FSO.OpenTextFile(inputfile)

    
' --- Überschriften einfügen
Ausgabe _
     "computer" & TRENNZEICHEN & _
     "Name" & TRENNZEICHEN & _
    "Beschreibung" & TRENNZEICHEN & _
    "Identifikationsnummer" & TRENNZEICHEN & _
    "Installationsdatum" & TRENNZEICHEN & _
    "Installationsverzeichnis" & TRENNZEICHEN & _
    "Zustand der Installation" & TRENNZEICHEN & _
    "Paketzwischenspeicher" & TRENNZEICHEN & _
    "SKU Nummer" & TRENNZEICHEN & _
    "Hersteller" & TRENNZEICHEN & _
    "Version"

' --- Schleife über alle computer
Do While Not TX.AtEndOfStream
    host = TX.ReadLine
    i = i + 1
    If Not Ping(host) Then
          WScript.echo "Host " & host & " nicht erreichbar!"
     Else
          GetInventar host
     End If
Loop

' --- Eingabedatei schließen
TX.Close
' --- Abschlußmeldung

' === Softwareliste für einen computer erstellen
Sub GetInventar(host)

Dim objProduktMenge
Dim objProdukt
Dim objWMIDienst

' --- Zugriff auf WMI
Set objWMIDienst = GetObject("winmgmts:" &_
    "{impersonationLevel=impersonate}!\\" & host &_
    "\root\cimv2")
' --- Liste anfordern
Set objProduktMenge = objWMIDienst.ExecQuery _
    (Bedingung)
' --- Liste ausgeben
WScript.echo "Auf " & host & " sind " & _
     objProduktMenge.Count & " Produkte installiert."
For Each objProdukt In objProduktMenge
    Ausgabe _
    host & TRENNZEICHEN & _
    objProdukt.Name & TRENNZEICHEN & _
    objProdukt.Description & TRENNZEICHEN & _
    objProdukt.IdentifyingNumber & TRENNZEICHEN & _
    objProdukt.InstallDate & TRENNZEICHEN & _
    objProdukt.InstallLocation & TRENNZEICHEN & _
    objProdukt.InstallState & TRENNZEICHEN & _
    objProdukt.PackageCache & TRENNZEICHEN & _
    objProdukt.SKUNumber & TRENNZEICHEN & _
    objProdukt.Vendor & TRENNZEICHEN & _
    objProdukt.Version

Next
IF statusdienst = 1 then
DIENSTE (host)
end if

'If statusprozesse = 1 then
'PROZESSE (host)
'end if

End Sub


'===============================================================
' DIENSTE ERMITTELN


Sub DIENSTE (host)

Ausgabe _
"DIENSTE für HOST: " & host

Computer = host
Set objWMIService = GetObject("winmgmts:" &_
    "{impersonationLevel=impersonate}!\\" & Computer &_
    "\root\cimv2")

Set colListOfServices = objWMIService.ExecQuery _
    ("SELECT * FROM Win32_Service")

For Each objService in colListOfServices
    
     Ausgabe _
    host & TRENNZEICHEN & _
    objService.DisplayName
     
Next


End Sub





Antworten

  Zurück zum Forum



 Klassische Programmierung (Scripting, COM) -- Windows Scripting, VBScript, VB6, u.a.
 Mit WMI auf entfernte Hosts zugreifen von PhilippThomas  am 11.1.2009 12:38:04 PM


www.IT-Visions.de - Dr. Holger Schwichtenberg / 1998-2019