Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Zwei WMI Scripte kombinieren

Frage Entwicklung

Mitglied: Holger292

Holger292 (Level 1) - Jetzt verbinden

12.11.2009 um 11:36 Uhr, 3211 Aufrufe, 5 Kommentare

Ich habe 2 WMI Scripte, welche nur zusammen 100% der Aufgabe erfüllen. Nun will ich beide zusammenführen.

Hi,


für meine Software Inventarisierung habe ich jetzt 2 Scripte, die beide nicht genau das machen, was ich will.

Script Nr. 1 liest zwar den falschen Pfad aus, aber erstellt eine Textdatei (.tsv) nach meinen Vorstellungen
Script Nr. 2 gibt mir alle Softwareeinträge aus dem richtigen Pfad einzeln in einer Messagebox aus.


Was ich brauche: Ein Script, welches den richtigen Registry Pfad ausliest (so wie Nummer 2) und mir dann anschließend diese Informationen in ein .tsv oder .txt Dokument ausgibt. (so wie Nr. 1 das kann)

Also: Alle Informationen aus Software\Microsoft\Windows\CurrentVersion\Uninstall\ in einer .tsv / .txt Datei, die ich später in Excel importieren kann. Der Dateiname soll den Namen des Rechners beinhalten. Und dann, wenn möglich, das Betriebssystem auslesen und ebenfalls als eine Zeile abspeichern.

Hier mal die beiden Codes:

Code Nr. 1

01.
Set FSO = CreateObject("Scripting.FileSystemObject") 
02.
strComputer = "." 
03.
Const wbemFlagReturnImmediately = &H10 
04.
Const wbemFlagForwardOnly = &H20 
05.
 
06.
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
07.
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) 
08.
For Each objItem In colItems 
09.
   strHostname = objItem.Name 
10.
Next 
11.
 
12.
Set strOutDatei = FSO.CreateTextFile("\Server\Ordner\" & strHostname & ".tsv") 
13.
strOutDatei.writeline "Computername" & vbtab & "Software" & vbtab & _ 
14.
   "Installationspfad" & vbtab & _ 
15.
   "Hersteller" & vbtab _ 
16.
   & "Version" 
17.
Set colSoftware = objWMIService.ExecQuery ("SELECT * FROM Win32_Product") 
18.
For Each objSoftware in colSoftware 
19.
      strOutDatei.WriteLine strHostname & vbtab & _ 
20.
      objSoftware.Caption & vbtab & _ 
21.
      objSoftware.InstallLocation & vbtab & _ 
22.
      objSoftware.Vendor & vbtab & _ 
23.
      objSoftware.Version 
24.
Next 
25.
strOutDatei.Close


Code Nr.2

01.
strHost = "." 
02.
Const HKLM = &H80000002 
03.
Set objReg = GetObject("winmgmts://" & strHost & _ 
04.
    "/root/default:StdRegProv") 
05.
Const strBaseKey = _ 
06.
    "Software\Microsoft\Windows\CurrentVersion\Uninstall\" 
07.
objReg.EnumKey HKLM, strBaseKey, arrSubKeys 
08.
  
09.
For Each strSubKey In arrSubKeys 
10.
    intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _ 
11.
        "DisplayName", strValue) 
12.
    If intRet <> 0 Then 
13.
        intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _ 
14.
        "QuietDisplayName", strValue) 
15.
    End If 
16.
    If (strValue <> "") and (intRet = 0) Then 
17.
        WScript.Echo strValue 
18.
    End If 
19.
Next 
20.
 

Ich weiß nicht, ob das zu viel verlangt ist, aber es wäre genial wenn mir da jemand helfen könnte. Ich habe leider keine Ahnung von wmi und vbs und fange gerade erst damit an.
Wenn möglich, wäre eine Erklärung toll, damit ich das nächste Mal selbstständiger bin!

Vielen Dank,

Holger
Mitglied: -ricardo-
12.11.2009 um 12:43 Uhr
Das zweite Script gibt aber nicht den Installations Pfad an ....
Bitte warten ..
Mitglied: Holger292
12.11.2009 um 13:16 Uhr
Das ist egal!

Hauptsache ich hab den Namen der Software, der Rest ist nicht so wichtig!
Bitte warten ..
Mitglied: -ricardo-
12.11.2009 um 13:36 Uhr
01.
strHost = "." 
02.
Const HKLM = &H80000002 
03.
Set objReg = GetObject("winmgmts://" & strHost & _ 
04.
    "/root/default:StdRegProv") 
05.
Const strBaseKey = _ 
06.
    "Software\Microsoft\Windows\CurrentVersion\Uninstall\" 
07.
objReg.EnumKey HKLM, strBaseKey, arrSubKeys 
08.
 
09.
Set objWMIService = GetObject("winmgmts:\\" & strHost & "\root\CIMV2") 
10.
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) 
11.
For Each objItem In colItems 
12.
   strHostname = objItem.Name 
13.
Next 
14.
 
15.
  
16.
Set FSO = CreateObject("Scripting.FileSystemObject") 
17.
Set strOutDatei = FSO.CreateTextFile("C:\" & strHostname & ".csv") 
18.
strOutDatei.writeline "Computername" & vbtab & "Software"  
19.
 
20.
For Each strSubKey In arrSubKeys 
21.
    intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _ 
22.
        "DisplayName", strValue) 
23.
    If intRet <> 0 Then 
24.
        intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _ 
25.
        "QuietDisplayName", strValue) 
26.
    End If 
27.
    If (strValue <> "") and (intRet = 0) Then 
28.
        strOutDatei.writeline strHostname & vbtab & strValue 
29.
    End If 
30.
Next 
31.
 

Müsstest nur noch den Pfad für die Datei anpassen ...
Bitte warten ..
Mitglied: Holger292
12.11.2009 um 14:23 Uhr
Sehr gut. Jetzt fehlt mir nur noch ne Zeile fürs Betriebssystem. Wie finde ich das heraus?
Bitte warten ..
Mitglied: -ricardo-
12.11.2009 um 14:53 Uhr
Die infos findest du im Win32 _OperatingSystem ....

01.
strHost = "." 
02.
Const HKLM = &H80000002 
03.
Set objReg = GetObject("winmgmts://" & strHost & _ 
04.
    "/root/default:StdRegProv") 
05.
Const strBaseKey = _ 
06.
    "Software\Microsoft\Windows\CurrentVersion\Uninstall\" 
07.
objReg.EnumKey HKLM, strBaseKey, arrSubKeys 
08.
 
09.
Set objWMIService = GetObject("winmgmts:\\" & strHost & "\root\CIMV2") 
10.
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) 
11.
For Each objItem In colItems 
12.
   strHostname = objItem.Name 
13.
Next 
14.
 
15.
Set objWMIService = GetObject("winmgmts:\\" & strHost & "\root\CIMV2") 
16.
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) 
17.
For Each objItem In colItems 
18.
   strHostname = objItem.Name 
19.
Next 
20.
 
21.
Set colOperatingSystem = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")   
22.
            For Each objOperatingSystem In colOperatingSystem 
23.
                OsName = objOperatingSystem.Caption 
24.
                OsServicePack = objOperatingSystem.CSDVersion 
25.
            Next 
26.
 
27.
  
28.
Set FSO = CreateObject("Scripting.FileSystemObject") 
29.
Set strOutDatei = FSO.CreateTextFile("C:\" & strHostname & ".csv") 
30.
strOutDatei.writeline "Computername" & vbtab & "Betriebssystem" & vbtab & "Software"  
31.
 
32.
For Each strSubKey In arrSubKeys 
33.
    intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _ 
34.
        "DisplayName", strValue) 
35.
    If intRet <> 0 Then 
36.
        intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _ 
37.
        "QuietDisplayName", strValue) 
38.
    End If 
39.
    If (strValue <> "") and (intRet = 0) Then 
40.
        strOutDatei.writeline strHostname & vbtab & OsName & " " & OsServicePack & vbtab & strValue 
41.
    End If 
42.
Next 
43.
 
Bitte warten ..
Ähnliche Inhalte
Windows Server
WMI-Filter kombinieren
gelöst Frage von Winfried-HHWindows Server1 Kommentar

Hallo Experten! Wenn ich einen WMI-Filter wie auf der folgenden Abbildung erstelle, ist das dann eine UND-Verknüpfung der beiden ...

Batch & Shell
Batches kombinieren
Frage von stridingBatch & Shell1 Kommentar

Hallo! Ich stehe mal wieder vor einem "Problem", das ich leider nicht gelöst bekomme. Vor einiger Zeit habe ich ...

Windows Tools
Verschiedene BOOT CDs kombinieren
Frage von agnostikerWindows Tools6 Kommentare

Hi, in manchem faellen kommen wir aufgrund von propritärer software nicht drumherum von boot medien zu starten, soll bedeuten ...

Netzwerkmanagement
WakeOnLAN für die Netzwerkkarte remote über ein Powershell- oder WMI-Script aktivieren
Frage von GlintofGoldNetzwerkmanagement11 Kommentare

Hallo, ich muss in einem räumlich weit auseinanderliegenden Netzwerk für mehrere Rechner WakeOnLAN aktivieren. Das ist so ziemlich das ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 2 StundenVerschlüsselung & Zertifikate

Interessant SSH-Kommando in CMD.exe und PowerShell

Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement17 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...