Zurück zu PowerShell
Registry & WMI/CIM
Registry-Werte lesen und setzen, Hardware und System über WMI/CIM abfragen.
Registry lesen und schreiben
PowerShell behandelt die Registry wie ein Dateisystem mit den Laufwerken HKLM: und HKCU:.
# Registry-Schluessel auflisten
Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Run
# Bestimmten Wert lesen
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name ProgramFilesDir
# Neuen Wert erstellen
New-ItemProperty -Path "HKCU:\Software\MeineTool" -Name "Einstellung" -Value "Aktiv" -PropertyType String
# Wert aendern
Set-ItemProperty -Path "HKCU:\Software\MeineTool" -Name "Einstellung" -Value "Inaktiv"
# Wert loeschen
Remove-ItemProperty -Path "HKCU:\Software\MeineTool" -Name "Einstellung"
# Ganzen Schluessel loeschen
Remove-Item -Path "HKCU:\Software\MeineTool" -Recurse
WMI/CIM-Abfragen
Get-CimInstance ersetzt das ältere Get-WmiObject und ist schneller und sicherer.
| Information | Befehl |
|---|---|
| Betriebssystem | Get-CimInstance Win32_OperatingSystem |
| BIOS-Informationen | Get-CimInstance Win32_BIOS |
| Festplatten | Get-CimInstance Win32_DiskDrive |
| RAM-Module | Get-CimInstance Win32_PhysicalMemory |
| Netzwerkadapter | Get-CimInstance Win32_NetworkAdapter -Filter "NetEnabled=True" |
| Installierte Software | Get-CimInstance Win32_Product |
Erweiterte CIM-Abfragen
# Mit Filter (schneller als Where-Object)
Get-CimInstance Win32_Service -Filter "StartMode='Auto' AND State='Stopped'"
# WQL-Query (SQL-aehnlich)
Get-CimInstance -Query "SELECT * FROM Win32_LogicalDisk WHERE DriveType=3 AND FreeSpace < 10737418240"
# Festplattenstatus mit Formatierung
Get-CimInstance Win32_LogicalDisk -Filter "DriveType=3" | ForEach-Object {
[PSCustomObject]@{
Laufwerk = $_.DeviceID
GesamtGB = [math]::Round($_.Size / 1GB, 1)
FreiGB = [math]::Round($_.FreeSpace / 1GB, 1)
FreiProzent = [math]::Round(($_.FreeSpace / $_.Size) * 100, 1)
}
} | Format-Table -AutoSize
Tipp: Get-CimInstance funktioniert auch remote mit -ComputerName. Für eine Liste aller WMI-Klassen: Get-CimClass -Namespace root/cimv2 | Where-Object CimClassName -like "Win32_*"