In dieser Anleitung werden drei PowerShell-Skripte für Windows 11 erstellt. Ziel ist es, Systeminformationen automatisch auszulesen, lokale Benutzer zu analysieren und eine einfache Netzwerkdiagnose durchzuführen. Zusätzlich werden die Ergebnisse als HTML-, CSV- und LOG-Dateien gespeichert.
C:\ScriptsNeuen Ordner erstellen:
mkdir C:\Scripts
Falls Skripte nicht gestartet werden können, zuerst die aktuelle Richtlinie prüfen:
Get-ExecutionPolicy
Falls erforderlich, für den aktuellen Benutzer anpassen:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Dieses Skript zeigt Computername, Windows-Version, CPU, RAM und Festplatteninformationen an und speichert das Ergebnis als HTML-Report.
Datei: C:\Scripts\Systeminfo-Report.ps1
$OutputPath = "C:\Scripts\SysteminfoReport.html"
$ComputerSystem = Get-CimInstance Win32_ComputerSystem
$OperatingSystem = Get-CimInstance Win32_OperatingSystem
$Processor = Get-CimInstance Win32_Processor
$Disks = Get-CimInstance Win32_LogicalDisk -Filter "DriveType=3"
$RamGB = [math]::Round($ComputerSystem.TotalPhysicalMemory / 1GB, 2)
$DiskInfo = foreach ($Disk in $Disks) {
[PSCustomObject]@{
Laufwerk = $Disk.DeviceID
GroesseGB = [math]::Round($Disk.Size / 1GB, 2)
FreiGB = [math]::Round($Disk.FreeSpace / 1GB, 2)
}
}
$SystemInfo = @"
<h2>Systemübersicht</h2>
<p><b>Computername:</b> $($env:COMPUTERNAME)</p>
<p><b>Windows-Version:</b> $($OperatingSystem.Caption) $($OperatingSystem.Version)</p>
<p><b>CPU:</b> $($Processor.Name)</p>
<p><b>RAM:</b> $RamGB GB</p>
"@
$DiskTable = $DiskInfo | ConvertTo-Html -Fragment
$Html = @"
<html>
<head>
<meta charset='UTF-8'>
<title>Systeminformationen</title>
</head>
<body>
<h1>Systeminformationen Report</h1>
$SystemInfo
<h2>Festplatteninformationen</h2>
$DiskTable
</body>
</html>
"@
$Html | Out-File -FilePath $OutputPath -Encoding UTF8
Write-Host "HTML-Report erstellt: $OutputPath"
C:\Scripts\Systeminfo-Report.ps1
C:\Scripts\SysteminfoReport.html wird erstellt und kann im Browser geöffnet werden.
Dieses Skript listet alle lokalen Benutzer auf, zeigt den Kontonamen sowie den Status an und exportiert die Daten als CSV-Datei. Zusätzlich wird die letzte Anmeldung über LastLogon ausgelesen, sofern verfügbar.
Datei: C:\Scripts\Benutzer-Analyse.ps1
$OutputPath = "C:\Scripts\LokaleBenutzer.csv"
$Users = Get-LocalUser | Select-Object Name, Enabled, LastLogon
$Users | Export-Csv -Path $OutputPath -NoTypeInformation -Encoding UTF8
Write-Host "CSV-Datei erstellt: $OutputPath"
C:\Scripts\Benutzer-Analyse.ps1
C:\Scripts\LokaleBenutzer.csv enthält alle lokalen Benutzer mit letzter Anmeldung.
LastLogon leer sein. Das ist normal und kein Fehler im Skript.
Dieses Skript testet die Konnektivität zum Gateway und zu einem DNS-Server. Die Ergebnisse werden in eine Log-Datei mit Zeitstempel geschrieben.
Datei: C:\Scripts\Netzwerk-Diagnose.ps1
$Timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
$LogPath = "C:\Scripts\Netzwerkdiagnose_$Timestamp.log"
$Gateway = (Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Sort-Object RouteMetric | Select-Object -First 1).NextHop
$DnsServer = (Get-DnsClientServerAddress -AddressFamily IPv4 | Where-Object {$_.ServerAddresses} | Select-Object -First 1).ServerAddresses[0]
"Netzwerkdiagnose gestartet: $(Get-Date)" | Out-File -FilePath $LogPath -Encoding UTF8
"Gateway: $Gateway" | Out-File -FilePath $LogPath -Append -Encoding UTF8
"DNS-Server: $DnsServer" | Out-File -FilePath $LogPath -Append -Encoding UTF8
"" | Out-File -FilePath $LogPath -Append -Encoding UTF8
if ($Gateway) {
$PingGateway = Test-Connection -ComputerName $Gateway -Count 2 -Quiet
"Gateway erreichbar: $PingGateway" | Out-File -FilePath $LogPath -Append -Encoding UTF8
} else {
"Gateway konnte nicht ermittelt werden." | Out-File -FilePath $LogPath -Append -Encoding UTF8
}
if ($DnsServer) {
$PingDns = Test-Connection -ComputerName $DnsServer -Count 2 -Quiet
"DNS erreichbar: $PingDns" | Out-File -FilePath $LogPath -Append -Encoding UTF8
} else {
"DNS-Server konnte nicht ermittelt werden." | Out-File -FilePath $LogPath -Append -Encoding UTF8
}
"" | Out-File -FilePath $LogPath -Append -Encoding UTF8
"Netzwerkdiagnose beendet: $(Get-Date)" | Out-File -FilePath $LogPath -Append -Encoding UTF8
Write-Host "Log-Datei erstellt: $LogPath"
C:\Scripts\Netzwerk-Diagnose.ps1
C:\Scripts erstellt.
| Datei | Beschreibung |
|---|---|
Systeminfo-Report.ps1 |
Erstellt einen HTML-Report mit Systeminformationen |
Benutzer-Analyse.ps1 |
Exportiert lokale Benutzerinformationen als CSV |
Netzwerk-Diagnose.ps1 |
Schreibt Netzwerk-Testergebnisse in eine Log-Datei |
SysteminfoReport.html |
HTML-Ausgabe des Systeminformations-Skripts |
LokaleBenutzer.csv |
CSV-Export der lokalen Benutzer |
Netzwerkdiagnose_*.log |
Diagnoseprotokoll mit Zeitstempel |
Falls alle drei Skripte mit einer einzigen Datei gestartet werden sollen, kann ein zusätzliches Startskript erstellt werden.
Datei: C:\Scripts\Alle-Skripte-starten.ps1
& "C:\Scripts\Systeminfo-Report.ps1"
& "C:\Scripts\Benutzer-Analyse.ps1"
& "C:\Scripts\Netzwerk-Diagnose.ps1"
Write-Host "Alle Skripte wurden ausgeführt."
C:\Scripts öffnen.ps1-Dateien vorhanden sindC:\Scripts existiert nichtGet-LocalUser liefert keine Daten bei fehlenden RechtenMit diesen drei PowerShell-Skripten lassen sich unter Windows 11 wichtige Verwaltungs- und Diagnoseaufgaben automatisieren. Systeminformationen werden als HTML dokumentiert, Benutzerdaten als CSV exportiert und Netzwerkprüfungen sauber in einer Log-Datei festgehalten. Damit entsteht eine kleine Automatisierungs-Werkzeugkiste für den Admin-Alltag.