Hallo,
bin immer noch dabei ein Script für Inventarisierung von Hardware zu schreiben / erweitern und die Daten in einer Excel-Tabelle zu speichern.
Da ich vorher nicht weiß, wie viele Netzwerkkarten, CPU's usw. ein Rechner aufweist, müssen die Spalten variabel sein. Das habe ich auch hinbekommen.
# CPU Name des Computers auslesen $script:CPUs = Get-WmiObject Win32_Processor -ComputerName $ComputerName | Select-Object -ExpandProperty Name # Array mit Anzahl der CPUs pro Rechner erstellen $CPUsArray = @() $CPUsArray += $script:CPUs $script:CPUCounter += $CPUsArray.Count
# Maximale Anzahl der verbauten Geräte ermitteln $CPUMax = $script:CPUCounter | Measure-Object -max | Select-Object -expand Maximum for($i=1; $i -le $CPUMax; $i++){ $ExlWorksheet.Cells.Item(1,$Col).Value2 = 'CPU'+$i $Col++
}
Soweit klappt das auch, jedoch habe ich Probleme beim Befüllen eines Multi-Arrays mit den Daten. Es sind danach nicht alle Datensätze vorhanden.
# Jeden Rechner einzeln verarbeiten ForEach ($ComputerName in $ComputerNames) { $script:j++ if(Test-Connection -ComputerName $ComputerName -Quiet -Count 1) { # wenn der Rechner per Ping erreichbar ist # Netzwerkkarte(n) des Rechners auslesen die eien IPAdresse haben $Networks = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $ComputerName | Where-Object {$_.ipenabled -eq 'true'} # Array mit der Anzahl der Netzwerkkarten pro Rechner erstellen $NetworksArray = @() $NetworksArray += $Networks $script:NetworkCounter += $NetworksArray.Count # MultiArray mit allen Karten $script:MultiNetwork += ,@($script:j, $Networks.IpAddress[0]) } #end if else{ # wenn der Rechner nicht per Ping erreich bar ist $script:MultiNetwork += ,@($script:j, 'Host nicht erreichbar') } #end else } # end foreach Computer
Lasse ich mir das Array $script:MultiNetwork ausgeben, fehlt z.B. mein eigener Rechner, der mehrere IP-Adressen hat.
Für einen Rat, was ich falsch mache wäre ich Euch dankbar.
Gruß Michael
Gruß Michael