- Get-ComputerInfo gibt konsistente Objekte zurück; Systeminfo erfordert CSV + ConvertFrom-Csv.
- Systeminfo ist schnell und remote mit /S /U /P; Get-ComputerInfo benötigt Invoke-Command.
- Die Lokalisierung wirkt sich auf Systeminformationen aus und normalisiert Header für robuste Skripte.
Der Vergleich von Get-ComputerInfo und systeminfo.exe ist eine wiederkehrende Abfrage unter Administratoren, die nach der effizientesten und „saubersten“ Möglichkeit zur Inventarisierung von Geräten suchen WindowsObwohl beide Systeminformationen zurückgeben, Sie verhalten sich nicht gleich, sie erbringen nicht die gleiche Leistung und sie bieten nicht die gleiche Art von Ausgabe., was direkte Auswirkungen auf Automatisierung, Berichterstellung und Remote-Ausführung hat.
In diesem Artikel finden Sie eine umfassende Anleitung die echte Praktiken, Leistungsnuancen integriert, Tricks mit der Pipeline von Powershell und weniger offensichtliche Details wie die Header in Systeminfo lokalisieren oder warum -Get-ComputerInfo-Eigenschaft gibt Objekte zurück Auch wenn Sie nur ein einzelnes Feld anfordern. Alles wird auf Spanisch erklärt, mit klaren Beispielen und Lösungen für häufige Fehler beim Ausführen auf Remotecomputern.
Was ist systeminfo.exe

systeminfo.exe ist das klassische Kommandozeilen-Dienstprogramm Befehle zum Profilieren eines Windows-Computers. Es ist von älteren Versionen (Windows XP Professional) bis Windows 11und befindet sich in %windir%\system32\systeminfo.exe (und auch auf 64-Bit-Systemen) %windir%\SysWOW64\systeminfo.exe). Zeigt Betriebssystemeinstellungen, Sicherheitsinformationen, Produkt-ID und Eigenschaften von Hardware als RAM, Festplattenspeicher oder Netzwerkkarten.
Ein großer Vorteil ist seine Allgegenwärtigkeit: Es ist in praktisch jedem Windows-Betriebssystem vorhanden. Es hat jedoch eine große Einschränkung: der Ausgang befindet sichDies bedeutet, dass Eigenschaftsnamen wie „Verfügbarer physischer Speicher“ im Englischen in anderen Sprachen anders aussehen können, was die Automatisierung erschwert, die auf diesen Headern basiert.
Obwohl es ein „altes“ Tool ist, ist es überraschend flexibel: Unterstützt Ausgabeformate mit dem Schalter /FO (Tabelle, Liste, CSV) und kann Remotecomputer konsultieren Verwendung /S für das Team, /U für den Benutzer u /P für das Kennwort. Dies ist nützlich für schnelle Bestandsaufnahmen, wenn Sie keine Remote-PowerShell-Sitzungen einrichten möchten.
Was ist Get-ComputerInfo
Get-ComputerInfo ist ein integriertes Cmdlet seit Windows PowerShell 5.1 (verfügbar unter Windows 10 und Windows Server 2016), dass fasst System- und Betriebssystemeigenschaften in einem einzigen Objekt zusammen. Ist nur unter Windows verfügbar und gibt Instanzen des Typs zurück Microsoft.PowerShell.Management.ComputerInfo mit Hunderten von aufgelisteten Immobilien.
Sein großer Vorteil besteht darin, dass die Ausgabe von der ersten Minute an objektorientiert ist.: Sie müssen keinen Text analysieren. Sie können es in die Pipeline leiten, formatear, filtern und exportieren Sie auf natürliche Weise mit Cmdlets wie Select-Object, Format-Liste, Sortier-Objekt o Export-Csv. Weitere Details in diesem Handbuch.
Der Parameter -Property akzeptiert ein Array von Zeichenfolgen (String[]). und unterstützt Platzhalter. Dies ermöglicht Ihnen die Auswahl bestimmter Eigenschaftensätze (z. B. alle Eigenschaften im Zusammenhang mit BIOS mit *BIOS*) oder eine kleine Liste wie Betriebssystemname, Zeitzone, Betriebssystemprodukttyp. Wichtig: Der Alias für Get-ComputerInfo ist gin, falls Sie auf verkürzte Skripte stoßen.
Wichtige Unterschiede und wann sie verwendet werden
Ausgabe und Datentyp: systeminfo.exe erzeugt Text (obwohl es CSV sein kann), was eine Konvertierung in Objekte erfordert, um in PowerShell bequem zu funktionieren; Get-ComputerInfo gibt zurück reichhaltige Objekte bereit für die Pipeline. Diese Ressource hilft, den Prozess besser zu verstehen.
Performance: Quellen stimmen darin überein, dass Get-ComputerInfo ist relativ langsam. Fragen Sie nach weniger Eigenschaften mit -Eigentum führt nicht zu einer signifikanten Verbesserung, da es sowieso viele Informationen sammelt. Systeminfo.exe ist normalerweise sehr schnell, insbesondere mit CSV.
entfernt: systeminfo.exe bietet /S, /U, /P für Remoteabfragen; Get-ComputerInfo hat nicht -ComputerName oder -CimSession, also müssen Sie verwenden Aufruf-Befehl oder Remote-PowerShell-Sitzungen (WinRM). Weitere Informationen finden Sie unter dieser Leitfaden.
systeminfo.exe in der Pipeline: vom Text zum Objekt
Die praktischste Möglichkeit, Systeminfo in PowerShell zu verwenden besteht darin, CSV anzufordern und in Objekte zu konvertieren mit ConvertFrom-CsvAuf diese Weise können Sie Eigenschaften ohne reguläre Ausdrücke oder manuelles Zuschneiden auswählen und bearbeiten.
$objetos = systeminfo.exe /FO CSV | ConvertFrom-Csv
$objetos.'Available Physical Memory'
Das Hauptproblem sind die Header: In anderen Sprachen sind die Eigenschaften unterschiedlich, was zu Skriptfehlern führt. Um dies zu vermeiden, normalisiert Header und ersetzen Sie sie durch feste und stabile Namen.
$headers = 1..30 | ForEach-Object { "Property$_" }
$objetos = systeminfo.exe /FO CSV |
Select-Object -Skip 1 |
ConvertFrom-Csv -Header $headers
$objetos.Property23
Eine noch elegantere Option ist, von Anfang an eigene Spaltennamen zu definieren. Mappen Sie beispielsweise alle Spalten mit eindeutigen Namen wie Hostname, Betriebssystemname, Betriebssystemversion, GesamtphysischerSpeicher, usw.
$headers = 'HostName','OSName','OSVersion','OSManufacturer','OSConfiguration','OSBuildType',
'RegisteredOwner','RegisteredOrganization','ProductID','OriginalInstallDate','SystemBootTime',
'SystemManufacturer','SystemModel','SystemType','Processors','BIOSVersion','WindowsDirectory',
'SystemDirectory','BootDevice','SystemLocale','InputLocale','TimeZone','TotalPhysicalMemory',
'AvailablePhysicalMemory','VirtualMemoryMaxSize','VirtualMemoryAvailable','VirtualMemoryInUse',
'PageFileLocations','Domain','LogonServer','Hotfix','NetworkCard','HyperVRequirements'
$objetos = systeminfo.exe /FO CSV |
Select-Object -Skip 1 |
ConvertFrom-Csv -Header $headers
$objetos.ProductID
Diese Methode beseitigt Sprachprobleme und macht Ihre Pipeline robuster.Darüber hinaus können Sie jede Eigenschaft eindeutig in CSV oder JSON exportieren oder bearbeiten.
Get-ComputerInfo: Auswählen von Eigenschaften und Formatierung
Ein Detail, das viele Menschen verwirrt ist, dass bei der Anforderung einer einzelnen Eigenschaft mit -Eigentum, das Cmdlet gibt zurück ein Objekt mit dieser Eigenschaft, nicht der „nackte“ Wert. Der Grund ist Konvention: -Eigenschaft ist ein String[], und es ist so konzipiert, dass Sie mit mehreren Eigenschaften ein Objekt mit diesen erhalten. Weitere Informationen finden Sie unter dieser Artikel.
$info = Get-ComputerInfo -Property OSName, TimeZone, OSProductType
Write-Output $info
# En formato lista
$info | Format-List
Wenn Sie nur den Wert einer Immobilie wissen möchtenmüssen Sie das Mitglied extrahieren, beispielsweise (Get-ComputerInfo).OSName, oder verwenden Objekt auswählen -Eigenschaft erweitern. Aber denken Sie daran, dass Das Anfordern weniger Objekte beschleunigt den Prozess nicht wesentlich.
Wildcard-Abfragen: BIOS und mehr
Get-ComputerInfo ist sehr nützlich zum Filtern nach MusternUm beispielsweise alles zum BIOS anzuzeigen, verwenden Sie -Eigenschaft *BIOS* und zur besseren Übersichtlichkeit in einer Liste formatiert.
Get-ComputerInfo -Property *BIOS* | Format-List
Kann auch mit Invoke-Command kombiniert werden um eine Teilmenge von Eigenschaften remote abzufragen und die Ergebnisse an CSV oder eine formatierte Konsole weiterzuleiten.
Leistung und bewährte Verfahren
Get-ComputerInfo bietet viele Inhalte, ist aber nicht das schnellste. Quellen stimmen darin überein, dass Es wird nicht empfohlen, es mehrmals für verschiedene Eigenschaften aufzurufen.: bedeutet, dass die Arbeit wiederholt werden muss. Am besten ist es, das komplette Objekt wiederherzustellen. nur einmal y Wählen Sie die Eigenschaften nachWeitere Informationen finden Sie unter dieser Artikel.
ysteminfo.exe ist sehr effizient in CSV und kombiniert es mit ConvertFrom-Csv und benutzerdefinierte Header können eine Grundlage für schnelle Berichte in heterogenen Umgebungen sein, in denen PowerShell-Remoting nicht immer aktiviert ist.
Remote-Ausführung: Ansätze und Beispiele
Mit systeminfo.exe Sie können Remotecomputer direkt abfragen mit /S (Teamname), /U (Benutzer) und /P (Passwort). Es ist nützlich, wenn WinRM ist nicht konfiguriert oder Sie benötigen bestimmte Ergebnisse.
systeminfo /S EQUIPO01 /U DOMINIO\usuario /P ContraseñaSegura
# Sin dominio, cuenta local
systeminfo /S EQUIPO01 /U .\Administrador /P ContraseñaSegura
Mit Get-ComputerInfogibt es keinen -ComputerName-Parameter. Für die Remote-Arbeit verwenden Sie Aufruf-Befehl und ein Block von SkriptDie Sammlung erfolgt auf dem Remote-Host und komplette Objekte werden zurückgegeben. Um Ihr Wissen zu erweitern, besuchen Sie .
Invoke-Command -ComputerName 'DC1' -ScriptBlock {
Get-ComputerInfo -Property *BIOS*
}
Praxisbeispiel zur Hotfix-Inventarisierung: wir haben das Anwesen erweitert OSHotFixes, wir sortieren nach Teamnamen und exportieren bei Bedarf.
Invoke-Command -ComputerName 'DC1','SRV01','Localhost' -ScriptBlock {
Get-ComputerInfo | Select-Object -ExpandProperty OSHotFixes
} | Sort-Object PSComputerName | Export-Csv -NoTypeInformation SRV-Updates.csv
Typische Fehler: Anmeldeinformationen, Variablen und Syntax
1) „Ein oder mehrere Computernamen sind ungültig“ im Invoke-Command. Es passiert normalerweise, weil einen ungültigen oder falsch geschriebenen Namen übergeben. Denken Sie daran: $CD3160-05 Es ist kein Teamname, es ist ein Ausdruck versucht, 05 von einer Variable $CD3160 (die höchstwahrscheinlich nicht existiert) zu subtrahieren. Es verwendet Anführungszeichen und wörtlichen Text: -ComputerName 'CD3160-05'.
# Incorrecto (interpreta variable y resta)
Invoke-Command -ComputerName $CD3160-05 -ScriptBlock { Get-ComputerInfo }
# Correcto (literal)
Invoke-Command -ComputerName 'CD3160-05' -ScriptBlock { Get-ComputerInfo }
2) Schließende Klammern und Sperren des ScriptBlocks. Stellen Sie sicher richtig öffnen und schließen { } und vermeiden Sie das Mischen der interaktiven Konsole innerhalb des ScriptBlocks. Schreiben Sie die Anweisung, die remote ausgeführt werden soll, ohne Eingabeaufforderungen oder „PS C:\>“.
3) Passwortabfrage bei Verwendung von systeminfo /S. Wenn der Remotecomputer keinen Authentifizierungskontext freigibt, Sie müssen /U und /P angeben. Für lokale Konten verwenden Sie .\Benutzer. Wenn es eine Domäne gibt, DOMÄNE\Benutzer. Wenn Sie die Domäne nicht kennen, überprüfen Sie auf dem lokalen Computer mit whoami oder %USERDOMAIN%. Weitere Einzelheiten finden Sie unter .
4) WinRM und Richtlinien. Für Invoke-Command, WinRM muss aktiviert sein und der Remote-Computer muss Verbindungen akzeptieren (Firewall und TrustedHosts). Führen Sie Enable-PSRemoting-Force am Ziel und überprüfen Sie die Firewall-Regeln für WS-Management (HTTP 5985/HTTPS 5986)Weitere Informationen finden Sie unter .
Erkunden Sie die offizielle Hilfe von Get-ComputerInfo
Verwenden Sie Get-Help Get-ComputerInfo zu konsultieren die Syntax und Eigenschaften. Parameter -Eigentum akzeptieren Zeichenfolge [], unterstützt Platzhalter und gibt ein Objekt zurück ComputerInfo. Sie können Zeichenfolgen, die Eigenschaftsnamen sind, pipen und sich daran erinnern, dass funktioniert nur unter Windows.
Get-Help Get-ComputerInfo
# Sintaxis relevante
Get-ComputerInfo <String[]>]
# Alias: gin
Um alle verfügbaren Immobilien zu besichtigen in Ihrem System, Kanal zu Get-MitgliedIn Windows 10 werden viele Eigenschaften im Zusammenhang mit BIOS, Betriebssystem, Hyper-V usw. angezeigt.
Get-ComputerInfo | Get-Member | more
Nützliche Beispiele und Formatierungen
Alle auflisten (kann aber sehr lang sein; verwenden Sie mehr zum Paginieren):
Get-ComputerInfo | more
Nach Version filtern Verwendung von Platzhaltern:
Get-ComputerInfo -Property '*version'
Wählen Sie bestimmte Eigenschaften aus und zeigen Sie sie deutlich an:
$info = Get-ComputerInfo -Property OSName, TimeZone, OSProductType
$info | Format-List
Beispiel mit Systeminfo + CSV und benutzerdefinierten Headern für einheitliche Ergebnisse in verschiedenen Sprachen:
$headers = 'HostName','OSName','OSVersion','OSManufacturer','OSConfiguration','OSBuildType',
'RegisteredOwner','RegisteredOrganization','ProductID','OriginalInstallDate','SystemBootTime',
'SystemManufacturer','SystemModel','SystemType','Processors','BIOSVersion','WindowsDirectory',
'SystemDirectory','BootDevice','SystemLocale','InputLocale','TimeZone','TotalPhysicalMemory',
'AvailablePhysicalMemory','VirtualMemoryMaxSize','VirtualMemoryAvailable','VirtualMemoryInUse',
'PageFileLocations','Domain','LogonServer','Hotfix','NetworkCard','HyperVRequirements'
$objetos = systeminfo.exe /FO CSV |
Select-Object -Skip 1 |
ConvertFrom-Csv -Header $headers
$objetos | Select-Object HostName, OSName, OSVersion
Kompatibilität, Standorte und zugehörige Tools
systeminfo.exe ist eine native Windows-Binärdatei und sein Code kann in Projekten wie ReactOS gefunden werden. Sein typischer Standort in System32 und SysWOW64 für x64-Systeme. Unterstützt Ausgabeformat über /FO (Tabelle, Liste, CSV). Sie können auch konsultieren So halten Sie Hilfekomponenten auf dem neuesten Stand.
Get-ComputerInfo wurde mit PowerShell 5.1 eingeführt, die einen Bedarf abdecken, den wir zuvor mit gelöst haben Get-WmiObject / Get-CimInstanceEin weiteres verwandtes Werkzeug ist msinfo32.exe, nützlich für die GUI-Diagnose, obwohl weniger pipelinefreundlich.
Leidenschaftlicher Autor über die Welt der Bytes und der Technologie im Allgemeinen. Ich liebe es, mein Wissen durch Schreiben zu teilen, und genau das werde ich in diesem Blog tun und Ihnen die interessantesten Dinge über Gadgets, Software, Hardware, technologische Trends und mehr zeigen. Mein Ziel ist es, Ihnen dabei zu helfen, sich auf einfache und unterhaltsame Weise in der digitalen Welt zurechtzufinden.

