Zum Inhalt springen

Tag 1 · Block 3: Profil, Sicherheit und Tagesabschluss

Core🖥 PSLAB-VM
3.1 · Mein ProfilÜbung🚫 KI-frei lösen
  1. Zeige den Pfad deines PowerShell-Profils an ($PROFILE). Gehört es zu PowerShell 7 oder zu Windows PowerShell 5.1?
  2. Prüfe mit Test-Path, ob die Datei existiert, und lege sie bei Bedarf mit New-Item -Force an.
  3. Öffne sie in VS Code (code $PROFILE) und füge ein: den Alias ll für Get-ChildItem und eine Begrüßung mit deinem Benutzernamen.
  4. Starte eine neue PowerShell. Begrüßt sie dich? Funktioniert ll?
Lösung anzeigen
Terminal-Fenster
$PROFILE
Test-Path $PROFILE
New-Item -ItemType File -Path $PROFILE -Force
code $PROFILE

Inhalt der Profildatei:

Terminal-Fenster
Set-Alias ll Get-ChildItem
Write-Output "Willkommen, $env:USERNAME!"

Das Profil von PowerShell 7 liegt in …\Documents\PowerShell\, das von Windows PowerShell 5.1 in …\Documents\WindowsPowerShell\.

3.2 · Execution PolicyÜbung🚫 KI-frei lösen
  1. Welche Execution Policy gilt in deiner Sitzung? Lass dir alle Scopes anzeigen.
  2. Lege eine Datei C:\Kurs\Skripte\hallo.ps1 mit dem Inhalt Write-Output "Hallo aus dem Skript" an und führe sie aus (C:\Kurs\Skripte\hallo.ps1).
  3. Setze die Policy für den aktuellen Prozess auf Restricted, falls dein System das zulässt, und führe das Skript erneut aus. Was passiert? (Wenn ein Gruppenrichtlinien-Scope die Änderung übersteuert, ist das eine Beobachtung wert.)
  4. Beende die PowerShell und starte neu. Welche Policy gilt wieder?
Lösung anzeigen
Terminal-Fenster
Get-ExecutionPolicy
Get-ExecutionPolicy -List
Set-Content -Path C:\Kurs\Skripte\hallo.ps1 -Value 'Write-Output "Hallo aus dem Skript"'
C:\Kurs\Skripte\hallo.ps1
Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope Process
C:\Kurs\Skripte\hallo.ps1 # Fehlermeldung: Skriptausführung ist deaktiviert

Der Scope Process gilt nur für die laufende Sitzung. Nach dem Neustart ist die vorherige Einstellung wieder aktiv. Auf Windows Server ist der Standard RemoteSigned, auf Clients Restricted.

3.3 · Mini-InventarChallenge🚫 KI-frei lösen

Baue Schritt für Schritt ein kleines Inventar deines Rechners, ausschließlich mit Dingen, die du bis hierher gelernt hast.

  1. Lege ein Objekt $inventar an ([PSCustomObject]) mit diesen Eigenschaften: Computer (Name des Rechners), Benutzer, PowerShellVersion, FreierSpeicherGB (Laufwerk C:, gerundet auf eine Nachkommastelle) und LaufendeDienste (Anzahl der Dienste mit Status Running).
  2. Gib das Objekt mit Format-List aus.
  3. Speichere es als CSV in C:\Kurs\Ausgabe\inventar.csv und lies die Datei mit Import-Csv wieder ein.
Lösung anzeigen
Terminal-Fenster
$frei = [math]::Round((Get-PSDrive -Name C).Free / 1GB, 1)
$dienste = (Get-Service | Where-Object Status -eq 'Running' | Measure-Object).Count
$inventar = [PSCustomObject]@{
Computer = $env:COMPUTERNAME
Benutzer = $env:USERNAME
PowerShellVersion = $PSVersionTable.PSVersion.ToString()
FreierSpeicherGB = $frei
LaufendeDienste = $dienste
}
$inventar | Format-List
$inventar | Export-Csv C:\Kurs\Ausgabe\inventar.csv
Import-Csv C:\Kurs\Ausgabe\inventar.csv

Mehrere Teilschritte lassen sich in Variablen zwischenspeichern. So bleibt jede Zeile lesbar und testbar.