Pikus1234 0 Geschrieben 30. Juni 2017 Melden Teilen Geschrieben 30. Juni 2017 Hallo an die Gemeinde und Wissenden hier. Ich hab wieder eine Frage an Euch. Ich möchte eine Hardwareinventur per Powershell bei mir aufbauen. 2 bekannte und gut funktionierende Scripte habe ich dazu gefunden und auf meine Bedürfnisse angepasst . 1.) PC Inventory 2.) EDID-Abfrage nach aktiven Monitoren des PC Nun sollen diese Scripte entsprechend die Daten in CSV ausgeben, damit SIe weiterverarbeitet werden können. Es ist dabei zu erwähnen, dass die PC aus einer txt.Datei ausgelesen, auf OnlineStatus geprüft und abgefragt werden. Bei der Ausgabe der Monitore zum PC komme ich aber an meine Grenze, denn ich bekomme den dazugehörigen Monitor nicht dem PC zugeordnet. Die Ausgabe in Powershell zeigt unter Computername immer alle Namen aus der o.g. Txt-Datei {Name,Name....} an und ordnet diesen nicht den gefundenen Monitoren korrekt zu. Hier gebe ich sicherlich die Objekte in der Pipeline falsch aus bzw. sortiere Sie nicht korrekt. Sicherlich ist die Lösung sooo einfach, aber ich komme (Anfänger pur) nicht auf die Lösung. #######Ab hier werden die ermittelten PC´s aus der txt-Datei ausgelesen! $computers = Get-Content -Path 'C:\livePCs.txt' foreach ($computer in $computers) { $Bios = Get-WmiObject win32_bios -Computername $Computer $Hardware = Get-WmiObject Win32_computerSystem -Computername $Computer $systemBios = $Bios.serialnumber $OutputObj = New-Object -Type PSObject $OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer.ToUpper() $OutputObj | Add-Member -MemberType NoteProperty -Name Serial_Number -Value $systemBios #####Nun werden diese Daten in eine CSV gespeichert und weiter zu den Monitoren.... ###################### ab hier werden Infos über die angeschlossenen Monitore gesammelt $computer = Get-Content -Path 'C:\livePCs.txt' $ActiveMonitors = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -ComputerName $computer $monitorInfo = @() $Serial_Number = $systemBios $ComputerName = $Computer $i= 1 foreach ($monitor in $ActiveMonitors) { $mon = $null $mon = New-Object PSObject $manufacturer = $null $dspserial = $null $name = $null $week = $null $year = $null $monitor.ManufacturerName | foreach {$manufacturer += [char]$_} $monitor.SerialNumberID | foreach {$dspserial += [char]$_} $monitor.UserFriendlyName | foreach {$name += [char]$_} $mon | Add-Member NoteProperty ComputerName $Computer.ToUpper() $mon | Add-Member NoteProperty Serial_Number $systemBios $mon | Add-Member NoteProperty Manufacturer $manufacturer $mon | Add-Member NoteProperty SerialNumber $dspserial $mon | Add-Member NoteProperty Name $name $mon | Add-Member NoteProperty Week $monitor.WeekOfManufacture $mon | Add-Member NoteProperty Year $monitor.YearOfManufacture $mon.SerialNumber = $dspserial.trim() $monitorInfo += $mon $i++ } #Hier sieht man im Output, wenn es mehr als 1 PC ist, dass die Ausgabe falsch ist und #zwar exakt die Ausgabe der PC-Daten zum Array der Monitore. #Wer kann helfen die Zuordnung mit anschließendem Export zu CSV zu komplettieren. Write-Output $monitorInfo #Ausgabe ist: # Die Monitore sind stimmig = nur die PC und Seriennummer-Zuordnung ist fehlerhaft #ComputerName : {xxxxxxx, xxxxxxxxx} #PCSerial : xxxxxxxx - nur 1 Seriennummer des 1. PC leider #Manufacturer : GSM #SerialNumber : 609NTUW6W678 #Name : 22MB65 #Week : 9 #Year : 2016 #ComputerName : {xxxxxxx, xxxxxxxxx} #PCSerial : xxxxxxxx - nur 1 Seriennummer des 1. PC leider (wieder dieselbe S/N) #Manufacturer : GSM #SerialNumber : 609NTAB6W680 #Name : 22MB65 #Week : 9 #Year : 2016 Ich hoffe hier hat jemand das Problem erkannt und kann mir helfen die Ausgabe der Daten zu korrigieren, Nämlich zu jeden erkannten Monitor muss der korrekte PC mit Seriennummer zugeordnet werden. Natürlich wäre es noch schöner wenn die Ausgabe-CSV der PC Daten mit der Ausgabe der Monitordaten nur ergänzt würde. Aber da bin ich gänzlich gescheitert und hab das erst mal verworfen, weil mir das KnowHow fehlt. Trotz Google war nichts zu machen. MfG Pikus Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 30. Juni 2017 Melden Teilen Geschrieben 30. Juni 2017 (bearbeitet) Pikus, es wäre einfacher und schneller, wenn Du beide Abfragen, also PC und Monitore, in einer Schleife erledigst. Du musst Dir dabei nur überlegen, wie Du damit umgehst, wenn ein PC mehr als einen Monitor angeschlossen hast. Wieviele Monitore kann ein PC in Deiner Infrastruktur denn maximal haben? bearbeitet 30. Juni 2017 von BOfH_666 Zitieren Link zu diesem Kommentar
Pikus1234 0 Geschrieben 30. Juni 2017 Autor Melden Teilen Geschrieben 30. Juni 2017 Ja das würde ich gern in einer Schleife erledigen und gleich mit den Daten in eine CSV schreiben lassen. Leider fehlt mir dazu das KnowHow. Meine Versuche mittels Google und meinem Verständnis das umzusetzen habe ich nach 2 Tagen intensiven Testens aufgegeben. Deswegen bin ich doch jetzt auf Hilfe von Euch angewiesen. Maximal können in unserer Struktur 3 Displays am PC verwendet sein. (Die evtl. mit angeschlossenen Beamer werden hier nicht betrachtet.) Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 30. Juni 2017 Melden Teilen Geschrieben 30. Juni 2017 Hmmm ... ok ... bestimmt nicht der eleganteste oder effizienteste Code, aber als Inspirationsquelle sollte es genügen, hoffe ich. $ComputerList = Get-Content -Path 'C:\livePCs.txt' $Inventory = foreach ($ComputerName in $ComputerList) { $SessionOption = New-CimSessionOption -Protocol Dcom $CIMSession = New-CimSession -ComputerName $ComputerName $Bios = Get-CimInstance -ClassName win32_bios -CimSession $CIMSession $Hardware = Get-CimInstance -ClassName Win32_computerSystem -CimSession $CIMSession [ARRAY]$MonitorList = Get-WmiObject -Class WMIMonitorID -Namespace root\wmi -ComputerName $ComputerName [PSCustomObject]@{ ComputerName = $ComputerName.ToUppper() SystemBios = $Bios.serialnumber Monitor1Manufacturer = If($MonitorList[0]){($MonitorList[0].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor1UserFriendlyName = If($MonitorList[0]){($MonitorList[0].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor1SerialNumberID = If($MonitorList[0]){($MonitorList[0].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2Manufacturer = If($MonitorList[1]){($MonitorList[1].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2UserFriendlyName = If($MonitorList[1]){($MonitorList[1].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2SerialNumberID = If($MonitorList[1]){($MonitorList[1].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3Manufacturer = If($MonitorList[2]){($MonitorList[2].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3UserFriendlyName = If($MonitorList[2]){($MonitorList[2].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3SerialNumberID = If($MonitorList[2]){($MonitorList[2].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} } } $Inventory ... das lässt sich natürlich noch beliebig erweitern oder verbessern. ... na probier erst mal ;) Achso ... Du brauchst Powershell 3.0 wenn ich mich nicht irre ... Zitieren Link zu diesem Kommentar
MurdocX 953 Geschrieben 1. Juli 2017 Melden Teilen Geschrieben 1. Juli 2017 Hmmm ... ok ... bestimmt nicht der eleganteste oder effizienteste Code, aber als Inspirationsquelle sollte es genügen, hoffe ich. ... das lässt sich natürlich noch beliebig erweitern oder verbessern. ... na probier erst mal ;) Achso ... Du brauchst Powershell 3.0 wenn ich mich nicht irre ... $SessionOption u. $Hardware finden bleiben unbenutzt in deinem Script :p Ein ähnliches Script habe ich auch mal geschrieben :) Sieht soweit ganz gut aus. @Pikus: Dafür das du nicht viel von Powershell verstehst, sieht das Script oben aber leicht komplex aus ;) Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 1. Juli 2017 Melden Teilen Geschrieben 1. Juli 2017 $SessionOption u. $Hardware finden bleiben unbenutzt in deinem Script :p .... outsch .. das kommt davon wenn man aus 3 Scripten eins machen will ... Danke für's "Debuggen" .... aber dann hat ja Pikus jetzt quasi gleich noch ein bissl Verbesserungspotential .... na ma kukn, ob er sich nochmal meldet. Zitieren Link zu diesem Kommentar
Pikus1234 0 Geschrieben 3. Juli 2017 Autor Melden Teilen Geschrieben 3. Juli 2017 Hallo Ihr Beiden, Natürlich melde ich mich nochmal. Und auch nachdem ich eure Gedanken umsetzen konnte. Heute komme ich leider nicht mehr dazu , und werde mich morgen wieder meinem Script widmen können. Natürlich sieht der Code recht komplex aus. Aber nicht vergessen......Copy and Paste by Google. Deshalb sieht´s besser aus als es ist. Ich verstehe im Groben ja auch was da passiert. Ich habe die einzelnen Schritte versucht in der PS.exe nachzuvollziehen. Da fehlt mir schon ein großes Stück wissen. Ich betreibe hier also Learning by Doing. Daher bin ich für jede gute Erklärung und Erkenntnis im Rahmen dessen glücklich. Aber ich bin lernwillig und fähig. Werde über die Fortschritte berichten und bestimmt wieder "anstrengende Fragen" haben, wo ich einfach auf Eure Hilfe hoffe. Mehr dazu wie gesagt ab Morgen. Vielen Dank :thumb1: :ph34r: Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 3. Juli 2017 Melden Teilen Geschrieben 3. Juli 2017 na das klingt doch supi .... dann denke ich, würde es sich für Dich bestimmt lohnen, Dir die Basics von Powershell mal "geordnet, strukturiert und didaktisch vernünftig aufbereitet" überzuhelfen. ;-) Hier sind ein paar Ressourcen verlinkt, die Dir einen guten Einstieg ermöglichen sollten. Besonders die beiden "Jump Starts", die in Jeffrey's Post verlinkt sind, sind sehr zu empfehlen. https://powershell.org/forums/topic/using-csv-files/ Zitieren Link zu diesem Kommentar
Pikus1234 0 Geschrieben 4. Juli 2017 Autor Melden Teilen Geschrieben 4. Juli 2017 Link ist gespeichert und wird natürlich eingehend gesichtet. Nebenbei schau ich ja auch von Peter Kriegel die Youtube-Reihe "German Powershell Basis Video Tutorial. Also Stück für Stück wird's werden. Nun zum Script = Stand heute: Ich habe deinen Sciptvorschlag eingebaut und bin zu einem fast akzeptablen Ergebnis gelangt. Eine CimSession kann ich in unserem Netzwerk nicht eröffnen, weil die Ports wahrscheinlich nicht geöffnet sind, oder Dienste nicht entsprechend konfiguriert sind. Wie auch immer, es war keine Kommunikation über diesen Weg möglich. Ich habe weiter über den WMI der Rechner die Daten abgefragt. Mein vorläufig funktionierend fertiges Script. Nur der CSV-Export funktioniert nur korrekt, wenn ich es in 2 Dateien speichern lasse. Ich hätte gern nur 1 CSV-Datei. Daran arbeite ich jetzt noch. # *** THIS SCRIPT IS PROVIDED WITHOUT WARRANTY, USE AT YOUR OWN RISK *** $testcomputers = "PCHostName1", "PCHostname2" #oder Get-Content -Path 'C:\computers.txt' $exportLocation = 'C:\pcInventoryPC.csv' $exportLocation1 = 'C:\pcInventoryMon.csv' # PC Connection Test bevor die PC´s ihre Inventur bekommen (Wenn online = speichern in live-PCs.txt Start Inventory, wenn offline = Gespeichert in dead.pcs.txt = keine Aktion) foreach ($computer in $testcomputers) { if (Test-Connection -ComputerName $computer -Quiet -count 2){ Add-Content -value $computer -path C:\livePCs.txt }else{ Add-Content -value $computer -path C:\deadPCs.txt } } # Nun wissen wir welche PC online sind # Prozedur mit der Inventory $computers = Get-Content -Path 'C\livePCs.txt' $Inventory = foreach ($computer in $computers) { $Bios = Get-WmiObject win32_bios -Computername $computer $Hardware = Get-WmiObject Win32_computerSystem -Computername $computer $Sysbuild = Get-WmiObject Win32_WmiSetting -Computername $computer $OS = Get-WmiObject Win32_OperatingSystem -Computername $computer $Networks = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $computer | Where-Object {$_.IPEnabled} $driveSpace = Get-WmiObject win32_volume -computername $Computer -Filter 'drivetype = 3' | Select-Object PScomputerName, driveletter, label, @{LABEL='GBfreespace';EXPRESSION={'{0:N2}' -f($_.freespace/1GB)} } | Where-Object { $_.driveletter -match 'C:' } $cpu = Get-WmiObject Win32_Processor -computername $computer $username = Get-ChildItem "\\$computer\c$\Users" | Sort-Object LastWriteTime -Descending | Select-Object Name, LastWriteTime -first 1 $totalMemory = [math]::round($Hardware.TotalPhysicalMemory/1024/1024/1024, 2) $lastBoot = $OS.ConvertToDateTime($OS.LastBootUpTime) $IPAddress = $Networks.IpAddress[0] $MACAddress = $Networks.MACAddress $systemBios = $Bios.serialnumber [ARRAY]$MonitorList = Get-WmiObject -Class WMIMonitorID -Namespace root\wmi -ComputerName $computer [PSCustomObject]@{ ComputerName = $computer PCSerial = $Bios.serialnumber Monitor1Hersteller = If($MonitorList[0]){($MonitorList[0].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor1Typ = If($MonitorList[0]){($MonitorList[0].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor1Seriennummer = If($MonitorList[0]){($MonitorList[0].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2Hersteller = If($MonitorList[1]){($MonitorList[1].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2Typ = If($MonitorList[1]){($MonitorList[1].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2Seriennummer = If($MonitorList[1]){($MonitorList[1].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3Hersteller = If($MonitorList[2]){($MonitorList[2].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3Typ = If($MonitorList[2]){($MonitorList[2].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3Seriennummer = If($MonitorList[2]){($MonitorList[2].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} } $OutputObj = New-Object -Type PSObject $OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer.ToUpper() $OutputObj | Add-Member -MemberType NoteProperty -Name Manufacturer -Value $Hardware.Manufacturer $OutputObj | Add-Member -MemberType NoteProperty -Name Model -Value $Hardware.Model $OutputObj | Add-Member -MemberType NoteProperty -Name Processor_Type -Value $cpu.Name $OutputObj | Add-Member -MemberType NoteProperty -Name System_Type -Value $Hardware.SystemType $OutputObj | Add-Member -MemberType NoteProperty -Name Operating_System -Value $OS.Caption $OutputObj | Add-Member -MemberType NoteProperty -Name Operating_System_Version -Value $OS.version $OutputObj | Add-Member -MemberType NoteProperty -Name Operating_System_BuildVersion -Value $SysBuild.BuildVersion $OutputObj | Add-Member -MemberType NoteProperty -Name Serial_Number -Value $systemBios $OutputObj | Add-Member -MemberType NoteProperty -Name IP_Address -Value $IPAddress $OutputObj | Add-Member -MemberType NoteProperty -Name MAC_Address -Value $MACAddress $OutputObj | Add-Member -MemberType NoteProperty -Name Last_User -Value $username.Name $OutputObj | Add-Member -MemberType NoteProperty -Name User_Last_Login -Value $username.LastWriteTime $OutputObj | Add-Member -MemberType NoteProperty -Name C:_FreeSpace_GB -Value $driveSpace.GBfreespace $OutputObj | Add-Member -MemberType NoteProperty -Name Total_Memory_GB -Value $totalMemory $OutputObj | Add-Member -MemberType NoteProperty -Name Last_ReBoot -Value $lastboot $OutputObj | Export-Csv $exportLocation -Append -NoTypeInformation -Force } $Inventory $Inventory | Export-Csv $exportLocation1 -Append -NoTypeInformation -Force #Wenn jetzt noch beide CSV-Dateien in eine zusammenverarbeitet werden können, ohne dass #die Daten verlorengehen (noClobber, Add-Content etc.) dann würde ich sagen = Super! Write-Host "Script beendet" Soweit meine Gedanken und Umsetzung zur Thematik. Abschließend ist diese Inventory natürlich noch nicht, denn weitere noch fehlende Hardware ist: angeschlossene Scanner und lokale Drucker mit Ihren Daten : Hersteller, Modell, Seriennummer. Aber das wird nach ersten Recherchen wohl verdammt schwierig. Hilfe ist natürlich auf jeden Fall erwünscht. :thumb1: :thumb1: :) Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 4. Juli 2017 Melden Teilen Geschrieben 4. Juli 2017 (bearbeitet) Du machst Dir's gern selbst ein bissl schwer, oder? ;) # *** THIS SCRIPT IS PROVIDED WITHOUT WARRANTY, USE AT YOUR OWN RISK *** $testcomputers = "PCHostName1", "PCHostname2" #oder Get-Content -Path 'C:\computers.txt' $exportLocation = 'C:\pcInventoryPC.csv' # PC Connection Test bevor die PC´s ihre Inventur bekommen (Wenn online = speichern in live-PCs.txt Start Inventory, wenn offline = Gespeichert in dead.pcs.txt = keine Aktion) foreach ($computer in $testcomputers) { if (Test-Connection -ComputerName $computer -Quiet -count 1){ Add-Content -value $computer -path C:\livePCs.txt }else{ Add-Content -value $computer -path C:\deadPCs.txt } } # Nun wissen wir welche PC online sind # Prozedur mit der Inventory $computers = Get-Content -Path 'C\livePCs.txt' $Inventory = foreach ($computer in $computers) { $Bios = Get-WmiObject win32_bios -Computername $computer $Hardware = Get-WmiObject Win32_computerSystem -Computername $computer $Sysbuild = Get-WmiObject Win32_WmiSetting -Computername $computer $OS = Get-WmiObject Win32_OperatingSystem -Computername $computer $Networks = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $computer | Where-Object {$_.IPEnabled} $driveSpace = Get-WmiObject win32_volume -computername $Computer -Filter 'drivetype = 3' | Select-Object PScomputerName, driveletter, label, @{LABEL='GBfreespace';EXPRESSION={'{0:N2}' -f($_.freespace/1GB)} } | Where-Object { $_.driveletter -match 'C:' } $cpu = Get-WmiObject Win32_Processor -computername $computer $username = Get-ChildItem "\\$computer\c$\Users" | Sort-Object LastWriteTime -Descending | Select-Object Name, LastWriteTime -first 1 [ARRAY]$MonitorList = Get-WmiObject -Class WMIMonitorID -Namespace root\wmi -ComputerName $computer [PSCustomObject]@{ ComputerName = $Computer.ToUpper() Manufacturer = $Hardware.Manufacturer Model = $Hardware.Model Processor_Type = $cpu.Name System_Type = $Hardware.SystemType Operating_System = $OS.Caption Operating_System_Version = $OS.version Operating_System_BuildVersion = $SysBuild.BuildVersion Serial_Number = $Bios.serialnumber IP_Address = $Networks.IpAddress[0] MAC_Address = $Networks.MACAddress Last_User = $username.Name User_Last_Login = $username.LastWriteTime 'C:_FreeSpace_GB' = $driveSpace.GBfreespace Total_Memory_GB = [math]::round($Hardware.TotalPhysicalMemory/1024/1024/1024, 2) Last_ReBoot = $OS.ConvertToDateTime($OS.LastBootUpTime) Monitor1Hersteller = If($MonitorList[0]){($MonitorList[0].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor1Typ = If($MonitorList[0]){($MonitorList[0].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor1Seriennummer = If($MonitorList[0]){($MonitorList[0].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2Hersteller = If($MonitorList[1]){($MonitorList[1].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2Typ = If($MonitorList[1]){($MonitorList[1].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2Seriennummer = If($MonitorList[1]){($MonitorList[1].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3Hersteller = If($MonitorList[2]){($MonitorList[2].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3Typ = If($MonitorList[2]){($MonitorList[2].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3Seriennummer = If($MonitorList[2]){($MonitorList[2].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} } ### End PSCustomObject } ### End Foreach Computer $Inventory $Inventory | Export-Csv $exportLocation -NoTypeInformation -Force ... den Rest darfst Du gern selbst noch ein bissl verbessern. bearbeitet 4. Juli 2017 von BOfH_666 Zitieren Link zu diesem Kommentar
Beste Lösung Pikus1234 0 Geschrieben 5. Juli 2017 Autor Beste Lösung Melden Teilen Geschrieben 5. Juli 2017 :schreck: :D :jau: so einfach kann es sein..... Ich sagte ja "Anfänger" grinsss. Da hab ich die Macht der geschweiften Klammern unterschätzt. Vielen Dank natürlich für den erfahrenen Weitblick. Jetzt bin ich tatsächlich hochauf und zufrieden mit dem Ergebnis. Also weiter im Text und schauen wie Drucker und Scanner sich finden lassen. Vielen Dank. Neue Fragen werden kommen. :thumb1: :thumb1: :thumb1: :thumb1: Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.