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

Hardware und Software Inventarisierung mit KIX

Anleitung Entwicklung KiXtart

Mitglied: gogoflash

gogoflash (Level 2) - Jetzt verbinden

24.10.2006, aktualisiert 14.12.2006, 27823 Aufrufe, 4 Kommentare

Wer hat nicht das Problem, irgendwann weiß man nicht mehr genau, was welcher Rechner für eine Konfiguration hat und wo welche Software liegt, weil die Kollegen untereinander keine Kommunikation haben. Eine Möglichkeit unter vielen ist KIX für eine Hardware und Software Inventarisierung zu nutzen.

Folgendes Skript liefert für jeden Rechner die Informationen über das Board, Prozessor, Speicher, Soundkarte, Grafikkarte, Festplatten und Partitionierung.

Zusätzlich wird auch die Installierte Software aufgeführt und allgemeine Infos herausgegeben.
Das Skript läßt sich ohne weiteres in ein bestehendes Loginskript integrieren. (Call inventar.kix).

Eine andere Variante ist unter.
http://www.administrator.de/Rechner_Inventarisierung%2C_Login_Skript_un ...
zu finden.

Im einzelnen wird pro Rechner folgend Info ausgegeben:


Allgemeine Infos:
- Erfassungsdatum
- OS
- IP-Adresse
- MAC Adresse
- Installationsdatum
- WIndowsverzeichnis

Mainboard:
- Hersteller
- Typbezeichnung
- Biosversion

Prozessoren:
- Typ und Geschwindigkeit

Speicher (RAM):
- Anzahl der Speicherbänke
- Speichermodule
- Speicher gesamt

Festplatten:
- Hersteller und Größe

Partitionierung:
- Laufwerksbuchstaben, Partitionsgröße, Dateisystem, Beschreibung der Partition
- Freier Speicherplatz auf Partition

Grafikkarte:
- Hersteller und Speichergröße

Netzwerkkarte und Soundkarte
- Hersteller

Software:
- Name, Hersteller und Installationsdatum


Quellen: Für dieses Skript ist das Skriptcenter von Microsoft. Daraus habe ich mein Skript erstellt.

Mögliche Modifizierungen:
Es ist möglich den Updatestatus der Rechner abzufragen und mit einer Datei abzugleichen, um so fehlende Updates zu bestimmen. (WSUS für "Arme"). Dies könnte man dann als Trigger benutzen um fehlende Updates einzuspielen, zumindest als KIX Studie könnte man dies mal durchführen.

; Umleitung der Ausgaben auf eine Datei mit Rechnernamen im Dateinamen
$result=ReDirectOutput ("D:\Inventar\"+@Hostname+"_info.txt" ,1)
$objWMIService = GetObject( "winmgmts://./root/cimv2" )
; Workstationname und Datum der Erfassung:
? "@WKSTA" " @date"

; Allgemeine Infos:
?
? "Allgemein:"
?
? " Letzter Login von: "@USERID
if not ingroup("Administratoren")
? " keine Adminrechte"
endif
? " OS: "@PRODUCTTYPE" mit "@CSD
? " IP Adresse: " + @IPADRESS0
? " MAC Adresse: " + @ADDRESS
? " "



$strComputer = "."
$objWMIService = GetObject("winmgmts:\\"+ $strComputer + "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each $objItem in $colItems
; Datum auf deutsche Konvention umwandeln
$jahr = left($objItem.InstallDate,4)
$tag= right($objItem.InstallDate,2)
$monat1 = left($objItem.InstallDate,6)
$monat = right($monat1,2)

? " Installationsdatum: " + $tag + "/" + $monat + "/" + $jahr
? " Windows Verzeichnis: " + $objItem.WindowsDirectory
? " "
Next

? "Mainboard:"
?
$SystemInfo = GetObject("WinMgmts:").InstancesOf("Win32_Baseboard")
For Each $Item In $SystemInfo
? " Hersteller : " + $Item.Manufacturer + " " + $Item.Product
? " Typ : " + $Item.Product
Next

$SystemInfo = GetObject("WinMgmts:").InstancesOf("Win32_BIOS")
For Each $Item In $SystemInfo
? " Bios : " + $Item.Name
? " Bios Version: " + $Item.SMBIOSBIOSVersion
? " "
Next

? "Prozessoren:"
?
$colItems = $objWMIService.ExecQuery( "Select * from Win32_Processor", "WQL", 48 )
For Each $objItem in $colItems
? " Name: " + Trim( $objItem.Name )
? " Manufacturer: " + $objItem.Manufacturer
? " Description: " + $objItem.Description
? " Current Clock Speed: " + $objItem.CurrentClockSpeed + " MHz"
?
Next

? "Speicher"
?

$colItems = $objWMIService.ExecQuery( "Select * from Win32_PhysicalMemoryArray", "WQL", 48 )
For Each $objItem In $colItems
? " Speicherbänke: " + $objItem.MemoryDevices
Next

$cntMod = 0
$strMod = ""
$colItems = $objWMIService.ExecQuery( "Select * from Win32_PhysicalMemory", "WQL", 48 )
For Each $objItem In $colItems
$cntMod = $cntMod + 1
$strCap = ( Val( $objItem.Capacity ) + 1023 ) / ( 1024 * 1024 )
$strMod = $strMod + " + " + $strCap
Next
? " Speichermodule: " + $cntMod + " (" + SubStr( $strMod, 4 ) + " MB)"

$colItems = $objWMIService.ExecQuery( "Select * from Win32_LogicalMemoryConfiguration", "WQL", 48 )
For Each $objItem In $colItems
? " Total Physical Memory: " + ( $objItem.TotalPhysicalMemory + 1023 ) / 1024 + " MB"
?
Next

;
? "Festplatten"
?
;
$colItems = $objWMIService.ExecQuery( "Select * from Win32_DiskDrive Where SCSITargetId >= 0",
"WQL", 48 )
For Each $objItem in $colItems
? " Manufacturer: " + $objItem.Manufacturer
? " Model: " + $objItem.Model
; Um mit großen Zahlen klarzukommen
$Size = $objItem.Size
$LSize = Len( $Size )
$MSize = SubStr( $Size, 1, $LSize - 3 )
$Size = ( 524288 + $MSize ) / 1048576
? " Size: $Size GB"
?
Next
;
? "Partitionierung"
?
$colItems = $objWMIService.ExecQuery("Select * from Win32_LogicalDisk")
For Each $objItem in $colItems

? " Laufwerksbuchstabe: " + $objItem.Caption
? " Name: " + $objItem.VolumeName
? " Beschreibung: " + $objItem.Description
? " Volume Serial Number: " + $objItem.VolumeSerialNumber
; ? " Device ID: " + $objItem.DeviceID
? " Dateisystem: " + $objItem.FileSystem
$Size = $objItem.FreeSpace
$LSize = Len( $Size )
$MSize = SubStr( $Size, 1, $LSize - 3 )
$Size = ( 524288 + $MSize ) / 1048576
? " Freier Platz: " + $Size + " GB"
$Size = $objItem.Size
$LSize = Len( $Size )
$MSize = SubStr( $Size, 1, $LSize - 3 )
$Size = ( 524288 + $MSize ) / 1048576
? " Größe: " + $Size + " GB"
? " "
Next
;
? "Grafikkarte:"
?
;
$colItems = $objWMIService.ExecQuery( "Select * from Win32_VideoController", , 48 )
For Each $objItem in $colItems
? " Name: " + $objItem.Name
? " Video Processor: " + $objItem.VideoProcessor
? " Adapter RAM: " + ( ( $objItem.AdapterRAM + 524288 ) / 1048576 ) + " MB"
? " Video Mode Description: " + $objItem.VideoModeDescription
?
Next
;
>? "Soundkarte:"
?
;
$colItems = $objWMIService.ExecQuery("Select * from Win32_SoundDevice")
For Each $objItem in $colItems
? " Name: " + $objItem.Caption
? " Herstellerr: " + $objItem.Manufacturer
? " "
Next
;
? "Netzwerkkarten:"
?
;
If $PC = ""
$PC = @WKSTA
EndIf
$objWMIService = GetObject( "winmgmts://" + $PC + "/root/WMI" )

$colItems = $objWMIService.ExecQuery( "SELECT * FROM MSNdis_EthernetCurrentAddress WHERE Active > = True", "WQL", 48 )
For Each $objItem In $colItems
$strMsg = $strMsg + " Ethernet Adapter: " + $objItem.InstanceName + @CRLF
$col2Items = $objWMIService.ExecQuery("SELECT * FROM MSNdis_LinkSpeed WHERE InstanceName > = '" + $objItem.InstanceName + "'", "WQL", 48 )
For Each $obj2Item In $col2Items
$strMsg = $strMsg + " NDIS Link Speed: " + $obj2Item.NdisLinkSpeed + " kBps@CRLF"
Next
$strMsg = $strMsg + @CRLF
Next

? $strMsg
;
? "Software:"
;

$strComputer = "."
$objWMIService = GetObject("winmgmts:\\"+ $strComputer + "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * from Win32_Product")
For Each $objItem in $colItems
? " Softwarename: " + $objItem.Caption
? " Version: " + $objItem.Version
? " Hersteller: " + $objItem.Vendor
$jahr = left($objItem.InstallDate,4)
$tag= right($objItem.InstallDate,2)
$monat1 = left($objItem.InstallDate,6)
$monat = right($monat1,2)
? " Installiert am: " + + $tag + "/" + $monat + "/" + $jahr
? " "
>Next
Mitglied: 33425
03.11.2006 um 19:27 Uhr
integrieren. (Call inventar.kix).

Das dürfte nur klappen wenn du es aus einem Kixtart Skript heraus ausgerufen wird.

Ich persönlich würde sydi-server (http://sourceforge.net/projects/sydi) bevorzugen, da es imho eleganter ist und auch eine Übersicht der verschiedenen Rechner mittels Excel/CSV unterstützt.

Mit freundlichen Grüßen
Schnitzelchen
Bitte warten ..
Mitglied: gogoflash
03.11.2006 um 19:30 Uhr
Ja. Wie ich schon sagte, kann es in ein bestehendes Loginscript integriert werden.

Zudem sollte hier auch die Möglichkeiten von Kix gezeigt werden. Wie und ob man es so macht bleibt jedem selbst überlassen. Sicherlich gibt es bessere und umfangreichere Programme, die diese Aufgabe erfüllen können, hier ist die Frage wie man es mit KIX mitteln durchführt...

Gruß Miguel
Bitte warten ..
Mitglied: Cornelius
14.12.2006 um 08:46 Uhr
Hi @all

ich hab ein bisschen am Script gespielt, und es aufgebessert, so dass jetzt wirklich alles aufgelistet wird, was mach braucht und überhaupt nicht benötigt, aber das ist jetzt egal. Denn das wichtigste ist, dass die Ausgabedatei weiter von einem Programm verarbeitet werden kann. Am besten seht ihr es euch selber an.

Ein Anliegen hätte ich trotzdem, ich fand bis jetzt noch keine Möglichkeit mit KiXtart direkt in eine Datenbank zu schreiben, gibt es eine Möglichkeit die Ausgabe z.B. in einen SQL-Server einzuspielen?

Erweiterungen:
- Drucker
- Laufwerke werden getrennt aufgelistet
- SID der Maschine
- MAC-Adresse von jeder Karte
- Komplette Softwareliste
- MS Office (2000/2003)


01.
 
02.
/*  
03.
Computer information with KiXtart 
04.
Copyright (C) 2006  Schwarz Alexander 
05.
 
06.
This program is free software; you can redistribute it and/or 
07.
modify it under the terms of the GNU General Public License 
08.
as published by the Free Software Foundation; either version 2 
09.
of the License, or any later version. 
10.
 
11.
This program is distributed in the hope that it will be useful, 
12.
but WITHOUT ANY WARRANTY; without even the implied warranty of 
13.
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
14.
GNU General Public License for more details. 
15.
 
16.
You should have received a copy of the GNU General Public License 
17.
along with this program; if not, write to the Free Software 
18.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA 
19.
*/  
20.
 
21.
 
22.
    ; --- Globale Konfiguration ---  
23.
    ; -- Anzeige Konfigurieren -- 
24.
    $save_to_file = TRUE ; TRUE/FALSE     
25.
    ; -- System Klasse --  
26.
    $objWMIService = GetObject( "winmgmts://./root/cimv2" ) 
27.
     
28.
     
29.
    ; --- Ausgabe --- 
30.
    If($save_to_file == TRUE) 
31.
      $SavePath = "C:\" + "\" + @WKSTA + ".txt" 
32.
      $result=ReDirectOutput ($SavePath,1) 
33.
    Else 
34.
      CLS 
35.
      COLOR g+/n    
36.
    EndIf 
37.
 
38.
 
39.
    ; --- Workstationname und Datum der Erfassung --- 
40.
    ; Header: benötigt für weitere bearbeitung 
41.
     
42.
    ? "[HOSTNAME]" 
43.
    ? @WKSTA  
44.
45.
    ? "[DATE]" 
46.
    ? @DATE 
47.
48.
     
49.
     
50.
    ; --- Benutzer-Informationen --- 
51.
     
52.
    ? "[USER]" 
53.
    ? "USERNAME=" + @USERID 
54.
    ? "FULLNAME=" + @FULLNAME 
55.
    ? "USERCOMMENT=" + @COMMENT 
56.
    ? "USERSID=" + @SID     
57.
    ? "USERLANG=" + @USERLANG 
58.
    ? "PWAGE=" + @PWAGE 
59.
    ? "MAXPWAGE=" + @MAXPWAGE 
60.
    ? "LOGONDOMAIN=" + @LDOMAIN 
61.
62.
     
63.
     
64.
    ; --- Benutzer-Informationen - Gruppen --- 
65.
    ; Alle Gruppen des Benutzers incl. Domain-Gruppen 
66.
     
67.
    ? "[USERGROUP]" 
68.
     
69.
    $iLoop = 0 
70.
    WHILE ENUMGROUP($iLoop) 
71.
      ? ENUMGROUP($iLoop) 
72.
      $iLoop = $iLoop + 1 
73.
    LOOP  
74.
    ?  
75.
     
76.
     
77.
    ; --- Workstation / Machine --- 
78.
     
79.
    SELECT 
80.
      CASE @INWIN == 1 
81.
        $os = "Windows NT" 
82.
      CASE @INWIN == 2 
83.
        $os = "Windows 9x" 
84.
    ENDSELECT 
85.
     
86.
    $objWMIService = GetObject("winmgmts:\\.\root\cimv2") 
87.
    $colItems = $objWMIService.ExecQuery("Select * from Win32_OperatingSystem") 
88.
    For Each $objItem in $colItems 
89.
      ; Datum auf deutsche Konvention umwandeln       
90.
      $inst_date = left($objItem.InstallDate,8) 
91.
      $inst_jahr = left($inst_date,4) 
92.
      $inst_date = right($inst_date,4) 
93.
      $inst_monat = left($inst_date,2) 
94.
      $inst_tag = right($inst_date,2) 
95.
   
96.
      $windir = $objItem.WindowsDirectory 
97.
      $install_date = $inst_tag + "." + $inst_monat + "." + $inst_jahr 
98.
    Next 
99.
    
100.
    ; SID der Maschine ermitteln 
101.
    $aSID = Split(@SID,"-") 
102.
     
103.
    $iLoop = 0 
104.
    For Each $element In $aSID 
105.
      $iLoop = $iLoop + 1 
106.
    Next 
107.
    $iLoop = $iLoop - 1 
108.
     
109.
    $SID = Join($aSID,"-",$iLoop) 
110.
    ; SID END 
111.
     
112.
    ? "[MACHINE]" 
113.
    ? "OS=" + $os 
114.
    ? "WIN=" + @PRODUCTTYPE 
115.
    ? "SP=" + @CSD 
116.
    ? "HOSTNAME=" + @WKSTA 
117.
    ? "DOMNAME=" + @HOSTNAME 
118.
    ? "DOMAIN=" + @DOMAIN 
119.
    ? "SYSLANG=" + @SYSLANG 
120.
    ? "INSTDATE=" + $install_date  
121.
    ? "WINDIR=" + $windir     
122.
    ? "SID=" + $sid 
123.
    ?  
124.
    
125.
     
126.
    ; --- Motherboard / Mainboard --- 
127.
     
128.
    $SystemInfo = GetObject("WinMgmts:").InstancesOf("Win32_Baseboard") 
129.
    For Each $Item In $SystemInfo 
130.
      $producer = $Item.Manufacturer 
131.
      $typ = $Item.Product 
132.
    Next 
133.
     
134.
    $SystemInfo = GetObject("WinMgmts:").InstancesOf("Win32_BIOS") 
135.
    For Each $Item In $SystemInfo 
136.
      $bios = $Item.Name 
137.
      $biosver = $Item.SMBIOSBIOSVersion     
138.
    Next 
139.
     
140.
    ? "[MAINBOARD]" 
141.
    ? "PRODUCER=" + $producer 
142.
    ? "TYP=" + $typ 
143.
    ? "BIOS=" + $bios 
144.
    ? "BIOSVER=" + $biosver 
145.
    ?  
146.
     
147.
     
148.
    ; --- CPU / Prozessor --- 
149.
        
150.
    $colItems = $objWMIService.ExecQuery( "Select * from Win32_Processor", "WQL", 48 ) 
151.
    $iLoop = 0 
152.
    For Each $objItem in $colItems 
153.
      ? "[CPU" + $iLoop + "]" 
154.
      ? "NAME=" + Trim($objItem.Name) 
155.
      ? "PRODUCER=" + $objItem.Manufacturer 
156.
      ? "DESCRIPTION=" + $objItem.Description 
157.
      ? "SPEED=" + $objItem.CurrentClockSpeed 
158.
159.
      $iLoop = $iLoop + 1 
160.
    Next 
161.
  
162.
  
163.
    ; --- RAM / Arbeitsspeicher --- 
164.
     
165.
    $colItems = $objWMIService.ExecQuery( "Select * from Win32_PhysicalMemoryArray", "WQL", 48 ) 
166.
    For Each $objItem In $colItems 
167.
      $slots = $objItem.MemoryDevices 
168.
    Next 
169.
     
170.
    $cntMod = 0 
171.
    $strMod = "" 
172.
    $colItems = $objWMIService.ExecQuery( "Select * from Win32_PhysicalMemory", "WQL", 48 ) 
173.
    For Each $objItem In $colItems 
174.
      $cntMod = $cntMod + 1 
175.
      $strCap = ( Val( $objItem.Capacity ) + 1023 ) / ( 1024 * 1024 ) 
176.
      $strMod = $strMod + "/" + $strCap 
177.
    Next 
178.
     
179.
    $colItems = $objWMIService.ExecQuery( "Select * from Win32_LogicalMemoryConfiguration", "WQL", 48 ) 
180.
      For Each $objItem In $colItems 
181.
        $total = ( $objItem.TotalPhysicalMemory + 1023 ) / 1024 
182.
      Next 
183.
     
184.
    ? "[RAM]" 
185.
    ? "SLOTS=" + $slots 
186.
    ? "CHIP=" + $cntMod 
187.
    ? "MODUL=" + SubStr($strMod,2) 
188.
    ? "TOTAL=" + $total 
189.
190.
  
191.
  
192.
    ; --- HD / Festplatten --- 
193.
     
194.
    $colItems = $objWMIService.ExecQuery( "Select * from Win32_DiskDrive Where SCSITargetId >= 0", "WQL", 48 ) 
195.
    $iLoop = 0 
196.
    For Each $objItem in $colItems 
197.
      ? "[HD" + $iLoop + "]" 
198.
      ? "PRODUCER=" + $objItem.Manufacturer 
199.
      ? "MODEL=" + $objItem.Model 
200.
      ; Umrechnung auf GB 
201.
      $Size = $objItem.Size 
202.
      $LSize = Len($Size) 
203.
      $MSize = SubStr( $Size, 1, $LSize - 3 ) 
204.
      $Size = ( 524288 + $MSize ) / 1048576 
205.
      ? "SIZE=" + $Size 
206.
207.
      $iLoop = $iLoop + 1 
208.
    Next 
209.
     
210.
     
211.
    ; --- Partitionierung --- 
212.
     
213.
    $iLoopHD = 0 
214.
    $sysHD = "" 
215.
    $iLoopFD = 0 
216.
    $sysFD = "" 
217.
    $iLoopCD = 0 
218.
    $sysCD = "" 
219.
    $iLoopNET = 0 
220.
    $sysNET = "" 
221.
     
222.
    $colItems = $objWMIService.ExecQuery("Select * from Win32_LogicalDisk")     
223.
    For Each $objItem in $colItems 
224.
      ; -- HDs -- 
225.
      If $objItem.Description == "Lokale Festplatte" 
226.
        If $sysHD <> "" 
227.
          $sysHD = $sysHD + @CRLF 
228.
        EndIf 
229.
         
230.
        $sysHD = $sysHD + "[PARTITION" + $iLoopHD + "]" + @CRLF 
231.
        $sysHD = $sysHD + "LETTER=" + $objItem.Caption + @CRLF 
232.
        $sysHD = $sysHD + "NAME=" + $objItem.VolumeName + @CRLF 
233.
        $sysHD = $sysHD + "DESCRIPTION=" + $objItem.Description + @CRLF 
234.
        $sysHD = $sysHD + "SERIALNR=" + $objItem.VolumeSerialNumber + @CRLF     
235.
        $sysHD = $sysHD + "FILESYSTEM=" + $objItem.FileSystem + @CRLF 
236.
         
237.
        $Size = $objItem.FreeSpace 
238.
        ; Umrechnung auf GB 
239.
        $LSize = Len( $Size ) 
240.
        $MSize = SubStr( $Size, 1, $LSize - 3 ) 
241.
        $Size = ( 524288 + $MSize ) / 1048576 
242.
         
243.
        $sysHD = $sysHD + "FREE=" + $Size + @CRLF 
244.
         
245.
        $Size = $objItem.Size 
246.
        ; Umrechnung auf GB 
247.
        $LSize = Len( $Size ) 
248.
        $MSize = SubStr( $Size, 1, $LSize - 3 ) 
249.
        $Size = ( 524288 + $MSize ) / 1048576 
250.
         
251.
        $sysHD = $sysHD + "SIZE=" + $Size + @CRLF 
252.
  
253.
        $iLoopHD = $iLoopHD + 1 
254.
      EndIf     
255.
       
256.
      ; -- Floppy -- 
257.
      If $objItem.Description == "3,5 Zoll-Diskettenlaufwerk" 
258.
        If $sysFD <> "" 
259.
          $sysFD = $sysFD + @CRLF 
260.
        EndIf 
261.
         
262.
        $sysFD = $sysFD + "[FLOPPY" + $iLoopFD + "]" + @CRLF 
263.
        $sysFD = $sysFD + "LETTER=" + $objItem.Caption + @CRLF 
264.
        $sysFD = $sysFD + "DESCRIPTION=" + $objItem.Description + @CRLF  
265.
         
266.
        $iLoopFD = $iLoopFD + 1 
267.
      EndIf 
268.
       
269.
      ; -- CD Laufwerke -- 
270.
      If $objItem.Description == "CD" 
271.
        If $sysCD <> "" 
272.
          $sysCD = $sysCD + @CRLF 
273.
        EndIf 
274.
         
275.
        $sysCD = $sysCD + "[CDDRIVE" + $iLoopCD + "]" + @CRLF 
276.
        $sysCD = $sysCD + "LETTER=" + $objItem.Caption + @CRLF         
277.
        $sysCD = $sysCD + "DESCRIPTION=" + $objItem.Description + @CRLF 
278.
  
279.
        $iLoopCD = $iLoopCD + 1 
280.
      EndIf    
281.
       
282.
      ; -- Netzwerkverbindungen -- 
283.
      If $objItem.Description == "Netzwerkverbindung" 
284.
        If $sysNET <> "" 
285.
          $sysNET = $sysNET + @CRLF 
286.
        EndIf 
287.
         
288.
        $sysNET = $sysNET + "[NETDRIVE" + $iLoopNET + "]" + @CRLF 
289.
        $sysNET = $sysNET + "LETTER=" + $objItem.Caption + @CRLF 
290.
        $sysNET = $sysNET + "NAME=" + $objItem.VolumeName + @CRLF 
291.
        $sysNET = $sysNET + "DESCRIPTION=" + $objItem.Description + @CRLF 
292.
        $sysNET = $sysNET + "SERIALNR=" + $objItem.VolumeSerialNumber + @CRLF     
293.
        $sysNET = $sysNET + "FILESYSTEM=" + $objItem.FileSystem + @CRLF 
294.
        $sysNET = $sysNET + "PARH=" + $objItem.ProviderName + @CRLF 
295.
  
296.
        $iLoopNET = $iLoopNET + 1 
297.
      EndIf       
298.
    Next   
299.
     
300.
    ? $sysHD  
301.
    ? $sysFD 
302.
    ? $sysCD 
303.
    ? $sysNET 
304.
     
305.
     
306.
    ; --- Printer / Drucker --- 
307.
     
308.
    $iCount = 0 
309.
    $colItems = $objWMIService.ExecQuery("Select * from Win32_Printer") 
310.
    For Each $objItem In $colItems 
311.
       
312.
      If $objItem.ServerName <> "" 
313.
        $server = "SERVER=" + $objItem.ServerName 
314.
      Else 
315.
        $server = "SERVER=LOCAL" 
316.
      EndIf 
317.
       
318.
      If $objItem.Default <> "0" 
319.
        $default = "TRUE" 
320.
      Else 
321.
        $default = "FALSE" 
322.
      EndIf 
323.
       
324.
      If $objItem.ShareName <> "" 
325.
        $name = $objItem.ShareName 
326.
      Else 
327.
        $name = $objItem.Caption 
328.
      EndIf 
329.
       
330.
      ? "[PRINTER" + $iCount + "]" 
331.
      ? "NAME=" + $name 
332.
      ? $server       
333.
      ? "DRIVERNAME=" + $objItem.DriverName 
334.
      ? "PORT=" + $objItem.PortName 
335.
      ? "DEVICEID=" + $objItem.DeviceID 
336.
      ? "LOCATION=" + $objItem.Location 
337.
      ? "COMMENT=" + $objItem.Comment 
338.
      ? "DEFAULT=" + $default 
339.
      ? "HORIZONTAL=" + $objItem.HorizontalResolution 
340.
      ? "VERTICAL=" + $objItem.VerticalResolution 
341.
342.
       
343.
      $iCount = $iCount + 1 
344.
    Next 
345.
     
346.
     
347.
    ; --- Grafikkarte / Video 
348.
     
349.
    $iCount = 0 
350.
    $colItems = $objWMIService.ExecQuery("Select * from Win32_VideoController") 
351.
    For Each $objItem In $colItems 
352.
      $name = $objItem.Name 
353.
       
354.
      $cpu = $objItem.VideoProcessor 
355.
      $ram = (($objItem.AdapterRAM + 524288) / 1048576) 
356.
      $description = Split($objItem.VideoModeDescription, " x ") 
357.
      $driver = $ObjItem.DriverVersion 
358.
      $aufloesung = "" 
359.
       
360.
      $iLoop = 0 
361.
      For Each $element In $description 
362.
        SELECT 
363.
          CASE $iLoop == 0 
364.
            $aufloesung = $element 
365.
          CASE $iLoop == 1 
366.
            $aufloesung = $aufloesung + "x" + $element 
367.
          CASE $iLoop == 2 
368.
            $farben = Split($element, " ")  
369.
          CASE 1              
370.
        ENDSELECT 
371.
        $iLoop = $iLoop + 1          
372.
      Next  
373.
       
374.
      $iLoop = 0 
375.
      For Each $element In $farben 
376.
        If $iLoop == 0 
377.
          $farbe = $element         
378.
        EndIf         
379.
        $iLoop = $iLoop + 1 
380.
      Next 
381.
       
382.
      If $name <> "Winvnc video hook driver"       
383.
        ? "[VIDEO" + $iCount + "]" 
384.
        ? "NAME=" + $name 
385.
        ? "DRIVERVER=" + $driver 
386.
        ? "CPU=" + $cpu 
387.
        ? "RAM=" + $ram 
388.
        ? "SOLUTION=" + $aufloesung 
389.
        ? "COLOR=" + $farbe ; $farbe is string  
390.
391.
         
392.
        $iCount = $iCount + 1 
393.
      EndIf       
394.
    Next 
395.
   
396.
    
397.
    ; --- Soundkarte --- 
398.
     
399.
    $colItems = $objWMIService.ExecQuery("Select * from Win32_SoundDevice") 
400.
    For Each $objItem in $colItems 
401.
      $name = $objItem.Caption 
402.
      $producer = $objItem.Manufacturer 
403.
       
404.
      ? "[SOUND]" 
405.
      ? "NAME=" + $name 
406.
      ? "PRODUCER=" + $producer 
407.
408.
    Next 
409.
     
410.
 
411.
    ; --- Netzwerkkarten ---        
412.
     
413.
    $iCount = 0 
414.
    For $iLoop = 0 To 9 Step 1 
415.
      If ENUMIPINFO($iLoop, 0, 1) <> "0.0.0.0" AND ENUMIPINFO($iLoop, 0, 1) 
416.
         
417.
        $name = ENUMIPINFO ($iLoop, 2, 1)         
418.
        $macaddres = "" 
419.
         
420.
        $objWMIService = GetObject( "winmgmts://./root/cimv2" ) 
421.
        $colItems = $ObjWMIService.ExecQuery("SELECT Name,MACAddress From Win32_NetworkAdapter")         
422.
        For Each $objItem In $colItems 
423.
          If $ObjItem.Name == $name 
424.
            $macaddres = $ObjItem.MACAddress                        
425.
          EndIf                            
426.
        Next 
427.
         
428.
        $objWMIService = GetObject( "winmgmts://./root/WMI" ) 
429.
        $colItems = $objWMIService.ExecQuery( "SELECT * FROM MSNdis_EthernetCurrentAddress WHERE Active = True", "WQL", 48 ) 
430.
        For Each $objItem In $colItems         
431.
          If $objItem.InstanceName == $name 
432.
            $col2Items = $objWMIService.ExecQuery("SELECT * FROM MSNdis_LinkSpeed WHERE InstanceName = '" + $objItem.InstanceName + "'", "WQL", 48 ) 
433.
           
434.
            For Each $obj2Item In $col2Items               
435.
                $speed = ($obj2Item.NdisLinkSpeed / 10 / 1000) ; MBit/s                         
436.
            Next 
437.
          EndIf       
438.
        Next 
439.
         
440.
        ? "[NETWORK" + $iCount + "]"         
441.
        ? "NAME=" + $name 
442.
        ? "MACADDRES=" + $macaddres 
443.
        ? "SPEED=" + $speed 
444.
        ? "IPADDRES=" + ENUMIPINFO($iLoop, 0, 1) 
445.
        ? "SUBNETMASK=" + ENUMIPINFO ($iLoop, 1, 1) 
446.
        ? "GATEWAY=" + ENUMIPINFO ($iLoop, 3, 1) 
447.
448.
         
449.
        $iCount = $iCount + 1 
450.
      EndIf 
451.
    Next 
452.
  
453.
     
454.
    ; --- Software --- 
455.
     
456.
    $msoffice = "" 
457.
     
458.
    $iCount = 0     
459.
    For $iLoop = 0 TO 2000 STEP 1 
460.
      $output = 0 
461.
      $KeyName = ENUMKEY("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $iLoop) 
462.
       
463.
      If @ERROR == 259  
464.
        $iLoop = 2000 ; End 
465.
      EndIf 
466.
       
467.
      If @ERROR == 0 AND $KeyName <> "NLSDownlevelMapping" AND $KeyName <> "IDNMitigationAPIs"       
468.
          $name = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $KeyName,"DisplayName") 
469.
           
470.
          If @ERROR == 0 
471.
            $output = 1 
472.
          EndIF   
473.
           
474.
          $version = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $KeyName,"DisplayVersion") 
475.
          $producer = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $KeyName,"Publisher") 
476.
          $installdate = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $KeyName,"InstallDate") 
477.
          $type = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $KeyName,"ReleaseType") 
478.
           
479.
          If $output == 1 AND $type <> "Hotfix"             
480.
            ? "[SOFTWARE" + $iCount + "]" 
481.
            ? "NAME=" + $name 
482.
            ? "VERSION=" + $version 
483.
            ? "PRODUCER=" + $producer 
484.
            ? "INSTALLDATE=" + $installdate 
485.
486.
             
487.
            OfficeCheck($name) 
488.
            $iCount = $iCount + 1 
489.
          EndIf                                         
490.
      EndIf 
491.
       
492.
      $name = "" 
493.
      $version = "" 
494.
      $producer = "" 
495.
      $installdate = "" 
496.
       
497.
    Next 
498.
     
499.
     
500.
    ; --- Software / Office ---  
501.
  
502.
    If $msoffice <> "" 
503.
     
504.
      DIM $soft[9] 
505.
      DIM $value[9] 
506.
           
507.
      $soft[0] = "Word" 
508.
      $soft[1] = "Excel" 
509.
      $soft[2] = "PowerPoint" 
510.
      $soft[3] = "Access" 
511.
      $soft[4] = "InfoPath" 
512.
      $soft[5] = "Publisher" 
513.
      $soft[6] = "Outlook" 
514.
      $soft[7] = "MS Project" 
515.
      $soft[8] = "Visio" 
516.
       
517.
      For $iLoop = 0 TO 8 STEP 1 
518.
        IsInstall($msoffice,$soft[$iLoop]) 
519.
        $value[$iLoop] = $return 
520.
      Next 
521.
             
522.
      ? "[OFFICE]" 
523.
      ? "VERSION="    + $msofficeversion 
524.
      ? "WORD="       + $value[0] 
525.
      ? "EXCEL="      + $value[1] 
526.
      ? "POWERPOINT=" + $value[2] 
527.
      ? "ACCESS="     + $value[3] 
528.
      ? "INFOPATH="   + $value[4] 
529.
      ? "PUBLISHER="  + $value[5] 
530.
      ? "OUTLOOK="    + $value[6] 
531.
      ? "PROJECT="    + $value[7] 
532.
      ? "VISIO="      + $value[8] 
533.
534.
       
535.
    EndIf 
536.
     
537.
    
538.
    ; --- FUNCTIONS --- 
539.
     
540.
    Function IsInstall($officeversion,$programm) 
541.
      If $officeversion == 9 AND $programm == Visio 
542.
        $Key = KeyExist("HKEY_LOCAL_MACHINE\SOFTWARE\Visio\Visio 2000") 
543.
        If $Key 
544.
          $return = "TRUE" 
545.
        Else 
546.
          $return = "FALSE" 
547.
        EndIf 
548.
      Else 
549.
        $Key = KeyExist("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\" + $officeversion + ".0\" + $programm) 
550.
        If $Key 
551.
          $return = "TRUE" 
552.
        Else 
553.
          $return = "FALSE" 
554.
        EndIf 
555.
      EndIf 
556.
    EndFunction  
557.
     
558.
    Function OfficeCheck($officename) 
559.
      If $officename == "Microsoft Office 2000 Premium"  
560.
        $msoffice = 9 
561.
        $msofficeversion = "2000" 
562.
      EndIf 
563.
       
564.
      If $officename == "Visio 2000 (DE)"  
565.
        $msoffice = 9 
566.
        $msofficeversion = "2000" 
567.
      EndIf 
568.
       
569.
      If $officename == "Microsoft Office Professional Edition 2003"  
570.
        $msoffice = 11 
571.
        $msofficeversion = "2003" 
572.
      EndIf 
573.
       
574.
      If $officename == "Microsoft Office Project Professional 2003" 
575.
        $msoffice = 11 
576.
        $msofficeversion = "2003" 
577.
      EndIf 
578.
       
579.
      If $officename == "Microsoft Office Visio Professional 2003" 
580.
        $msoffice = 11 
581.
        $msofficeversion = "2003" 
582.
      EndIf 
583.
    EndFunction  
584.
    
Bitte warten ..
Mitglied: 44800
29.07.2009 um 10:35 Uhr
bei mir kommt in zeile 397 eine fehlermeldung bei folgendem code:

If ENUMIPINFO($iLoop, 0, 1) <> "0.0.0.0" AND ENUMIPINFO($iLoop, 0, 1)

fehlermeldung: ERROR : invalid method/function call: too many parameters!
Script: \\ex2003\netlogon\inventar.kix
Line : 397
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows 10
gelöst Gerätemanager: Faken der angezeigten Hardware (4)

Frage von DerTeufelImDetail zum Thema Windows 10 ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

LAN, WAN, Wireless
Software für Backup oder Datensynchronisation über WAN gesucht (4)

Frage von Rubiks zum Thema LAN, WAN, Wireless ...

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

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...