Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

in WMI Computernamen abfragen

Frage Entwicklung

Mitglied: Holger292

Holger292 (Level 1) - Jetzt verbinden

11.11.2009, aktualisiert 12.11.2009, 8098 Aufrufe, 8 Kommentare

Es geht darum, per WMi Script den Computernamen in den Titel einer Textdatei auf ein Laufwerk zu schreiben.

Hi,

ich benutze folgendes WMI Script, um an die installierte Software auf Netzwerkcomputern zu kommen. Das Script wird beim Systemstart ausgeführt und schreibt eine Textdatei auf ein Netzlaufwerk. Jetzt wollte ich nur den Dateinamen durch den jeweiligen Computernamen ersetzen, allerdings komm ich nicht wirklich weiter. Hab schon mit Systemvariablen wie %Computername% rumexperimentiert, bringt aber irgendwie nix.

01.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
02.
Set objTextFile = objFSO.CreateTextFile("X:\Inventarisierung\[COLOR="Red"]COMPUTERNAME[/COLOR].tsv", True) 
03.
strComputer = "." 
04.
Set objWMIService = GetObject("winmgmts:" _ 
05.
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
06.
Set colSoftware = objWMIService.ExecQuery _ 
07.
 ("SELECT * FROM Win32_Product") 
08.
objTextFile.WriteLine "Caption" & vbtab & _ 
09.
"Description" & vbtab & "Identifying Number" & vbtab & _ 
10.
"Install Date" & vbtab & "Install Location" & vbtab & _ 
11.
"Install State" & vbtab & "Name" & vbtab & _ 
12.
"Package Cache" & vbtab & "SKU Number" & vbtab & "Vendor" & vbtab _ 
13.
 & "Version" 
14.
For Each objSoftware in colSoftware 
15.
 objTextFile.WriteLine objSoftware.Caption & vbtab & _ 
16.
 objSoftware.Description & vbtab & _ 
17.
 objSoftware.IdentifyingNumber & vbtab & _ 
18.
 objSoftware.InstallLocation & vbtab & _ 
19.
 objSoftware.InstallState & vbtab & _ 
20.
 objSoftware.Name & vbtab & _ 
21.
 objSoftware.PackageCache & vbtab & _ 
22.
 objSoftware.SKUNumber & vbtab & _ 
23.
 objSoftware.Vendor & vbtab & _ 
24.
 objSoftware.Version 
25.
Next 
26.
objTextFile.Close

Ich habe mal gegoogelt und folgende Funktion gefunden:
01.
Function GetComputerName() 
02.
        On Error Resume Next 
03.
        Set OpSysSet = GetObject("winmgmts:\root\cimv2").ExecQuery("select * from Win32_ComputerSystem") 
04.
        For each i in OpSysSet 
05.
                GetComputerName = i.Name 
06.
        Next 
07.
End Function
Ich muss dazu sagen, dass ich mit WMI und vbs bisher nichts zu tun hatte. Ich weiß nicht wirklich, wie ich die beiden Codes jetzt zusammenbekomme.

Und dann gleich noch ne Frage: Wie kann ich viele TSV Dateien zu einer großen Excel Tabelle zusammenfügen? Also praktisch alle Datensätze direkt hintereinander schreiben? (Aber erst im Nachhinein, ich will trotzdem für jeden PC zusätzlich ne eigene Datei haben)

Danke schonmal!


[Edit Biber] Codetags nachgetragen. [/Edit]
Mitglied: SamTrex
11.11.2009 um 13:00 Uhr
Hallo Holger,
das geht am einfachsten über vbs. Kannst du so in deinem Script einsetzen:

01.
dim objNET 
02.
set objNET = createobject("wscript.network") 
03.
strComputer = objNET.computername
oder du liest die Systemvariable aus (kannst du auch so einsetzen):

01.
dim objshell 
02.
set objshell = createobject("wscript.shell") 
03.
strComputer = objshell.environment("process")("computername")
Gruß Sam

/Edit:
Meinst du CSV - Dateien? TSV sagt mir nichts.
Wie sieht denn der Inhalt derer aus? Immer nur eine Zeile? Gib doch mal ein Beispiel der Datei...
Bitte warten ..
Mitglied: Iwan
11.11.2009 um 13:15 Uhr
TSV = Tab Separated Values

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("D:\Ergebnis\" & strHostname & ".tsv") 
13.
strOutDatei.writeline "Caption" & vbtab & _ 
14.
   "Description" & vbtab & "Identifying Number" & vbtab & _ 
15.
   "Install Date" & vbtab & "Install Location" & vbtab & _ 
16.
   "Install State" & vbtab & "Name" & vbtab & _ 
17.
   "Package Cache" & vbtab & "SKU Number" & vbtab & "Vendor" & vbtab _ 
18.
   & "Version" 
19.
Set colSoftware = objWMIService.ExecQuery ("SELECT * FROM Win32_Product") 
20.
For Each objSoftware in colSoftware 
21.
   strOutDatei.WriteLine objSoftware.Caption & vbtab & _ 
22.
      objSoftware.Description & vbtab & _ 
23.
      objSoftware.IdentifyingNumber & vbtab & _ 
24.
      objSoftware.InstallLocation & vbtab & _ 
25.
      objSoftware.InstallState & vbtab & _ 
26.
      objSoftware.Name & vbtab & _ 
27.
      objSoftware.PackageCache & vbtab & _ 
28.
      objSoftware.SKUNumber & vbtab & _ 
29.
      objSoftware.Vendor & vbtab & _ 
30.
      objSoftware.Version 
31.
Next 
32.
strOutDatei.Close 
33.
Wscript.Echo "Fertig!"
Bitte warten ..
Mitglied: Holger292
11.11.2009 um 13:48 Uhr
Prima, vielen Dank euch Beiden! Hat funktioniert!

Bleibt noch die Frage, wie ich die erstellten tsv Dateien in ein großes Excel Dokument vereinen kann. Die müssen nur untereinander stehen, mehr nicht.
Bitte warten ..
Mitglied: Iwan
11.11.2009 um 14:32 Uhr
in dem du die Datei einfach mit Excel öffnest und beim Import angibst, das die Spalten durch Tabs getrennt sind
Bitte warten ..
Mitglied: SamTrex
11.11.2009 um 21:29 Uhr
Danke Iwan,
wieder was gelernd. ... Dachte das auch so separierte Dateien unter csv läuft.

Gruß Sam
Bitte warten ..
Mitglied: bastla
11.11.2009 um 21:34 Uhr
Hallo Holger292 und willkommen im Forum!

Das Zusammenfügen der einzelnen .tsv-Dateien lässt sich einfach per Kommandozeile machen:
copy *.tsv Gesamt.txt
Danach dann, wie von Iwan beschrieben, in Excel die "Gesamt.txt" öffnen ...

Grüße
bastla
Bitte warten ..
Mitglied: Holger292
12.11.2009 um 08:56 Uhr
Vielen Dank an Alle, es funktioniert wunderbar!
Bitte warten ..
Mitglied: Holger292
12.11.2009 um 10:06 Uhr
Hi,


leider doch nicht ganz son wunderbar, denn es fehlen jede Menge Programme in meiner erstellten Liste. Das Script von MS scheint da nicht das Geeignete zu sein.

Wenn ich das richtig sehe, liest das Script auch nicht den Uninstall Key aus, den ja auch die Liste unter Systemsteuerung -> Software benutzt.

Wie kann ich das Script jetzt noch dazu bringen, diesen Key auszulesen?
Und wie nehme ich den Lösungshaken bei diesem Thread wieder raus?
Wie kann ich den Namen des Betriebssystems auslesen?


Ich habe diesen Code gefunden, mit dem ich allerdings etwas überfordert bin:

http://gallery.technet.microsoft.com/ScriptCenter/en-us/b994f262-be39-4 ...
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Netzwerk
gelöst GPO auf alle PCs mit bestimmtes Computernamen Schema anwenden lassen (5)

Frage von Michael-ITler zum Thema Windows Netzwerk ...

Windows 7
Computer OU auslesen bzw. abfragen (2)

Frage von mexx991 zum Thema Windows 7 ...

Netzwerkgrundlagen
gelöst Beliebigen Zeitserver auf Zeit abfragen (4)

Frage von blade999 zum Thema Netzwerkgrundlagen ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...