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

in WMI Computernamen abfragen

Frage Entwicklung

Mitglied: Holger292

Holger292 (Level 1) - Jetzt verbinden

11.11.2009, aktualisiert 12.11.2009, 8451 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 ..
Ähnliche Inhalte
Batch & Shell
Powershell Abfrage Computername, OS, Notebook oder Workstation, Office Version
Beitrag von 2 Kommentare

Frage von ChrisIO zum Thema Batch & Shell

Entwicklung
Powershell: Computernamen eingeben
Beitrag von 10 Kommentare

Frage von honeybee zum Thema Entwicklung

Batch & Shell
Powershell - WMI Return Codes unterdrücken, WIE?
Beitrag von 3 Kommentare

Frage von instinctless zum Thema Batch & Shell

Windows Server
MDT 2013 Computername von Datenbank
Beitrag von 7 Kommentare

Frage von Hansi1985 zum Thema Windows Server

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Beitrag von 4 Kommentare

Anleitung von colinardo zum Thema MikroTik RouterOS

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Beitrag von

Information von BassFishFox zum Thema Sicherheit

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Beitrag von 5 Kommentare

Information von admtech zum Thema Administrator.de Feedback

Vmware

VMware Desktopprodukte sind verwundbar

Beitrag von

Information von Penny.Cilin zum Thema Vmware

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Beitrag von 24 Kommentare

Frage von ahstax zum Thema Visual Studio

Windows Server
RDP macht Server schneller???
Beitrag von 16 Kommentare

Frage von JaniDJ zum Thema Windows Server

Windows Netzwerk
Netzwerk Neustrukturierung
Beitrag von 16 Kommentare

Frage von IT-Dreamer zum Thema Windows Netzwerk

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Beitrag von 15 Kommentare

Frage von Akcent zum Thema Windows 10