Anhang – Antworten auf Fragen zur Überprüfung

Dieser Anhang enthält kurze Antworten auf die Rezensionsfragen, die am Ende jedes Kapitels zu finden sind. Verwenden Sie sie, um Ihr Verständnis zu überprüfen und wichtige Konzepte zu stärken.

Kapitel 1 – Erste Schritte mit PowerShell

  1. Verwenden Sie die $PSVersionTable automatische Variable.
  2. Nur wenn Sie die Benutzerkontensteuerung (User Account Control, UAC) für Aufgaben umgehen müssen, die eine Erhöhung der Berechtigungen auf dem lokalen Computer erfordern.
  3. Die Standardausführungsrichtlinie für Windows Clientsysteme ist Restricted, wodurch das Ausführen von Skripts verhindert wird.
  4. Verwenden Sie Get-ExecutionPolicy, um die aktuelle Ausführungsrichtlinie zu ermitteln.
  5. Verwenden Sie Set-ExecutionPolicy (zum Beispiel Set-ExecutionPolicy -ExecutionPolicy RemoteSigned).

Kapitel 2 – Das Hilfesystem

  1. Nein. Der DisplayName-Parameter von Get-Service ist benannt, nicht positional.
  2. Get-Process hat sechs Parametersätze.
  3. Verwenden Sie Get-Command -Noun EventLog.
  4. Verwenden Sie Get-Process -Name powershell.
  5. Führen Sie Update-Help mit erhöhten Rechten in Windows PowerShell als Administrator aus, um die neuesten Hilfeinhalte herunterzuladen und zu installieren.

Kapitel 3: Entdecken von Objekten, Eigenschaften und Methoden

  1. Get-Process erzeugt ein System.Diagnostics.Process Objekt.
  2. Leiten Sie den Befehl zu Get-Member.
  3. Überprüfen Sie, ob das Objekt über eine Methode verfügt, die die Aktion ausführt.
  4. Verwenden Sie den Parameter des PassThru Befehls, falls er über einen verfügt.
  5. Führen Sie den Befehl einmal aus und speichern Sie die Ergebnisse in einer Variablen, um das wiederholte Erzeugen großer Mengen an Ausgaben während des Prototypings zu vermeiden.

Kapitel 4 – One-Liners und die Pipeline

  1. Ein PowerShell-Einzeiler ist eine einzige fortlaufende Pipeline, unabhängig davon, wie viele physische Zeilen sie umfasst.
  2. Natürliche Zeilenumbrüche können bei Zeichen wie dem Pipe-Zeichen (|), Komma (,), öffnenden Klammern ([ ]), geschweiften Klammern ({ }) und runden Klammern (( )) auftreten.
  3. Sie sollten nach links filtern, um die Leistung und Effizienz zu verbessern, indem Sie die Menge der an der Pipeline übergebenen Daten reduzieren.
  4. Ein Befehl kann pipelineeingaben nach Wert (nach Typ) oder nach Eigenschaftsname akzeptieren.
  5. Da die meisten Inhalte in der PowerShell-Katalog von der Community bereitgestellt werden und möglicherweise nicht geprüft wurden, sollten diese vor der Verwendung überprüft und getestet werden.

Kapitel 5 - Formatierung, Aliase, Provider, Vergleich

  1. Da Formatierungs-Cmdlets Formatobjekte erzeugen, die die Pipeline unterbrechen und von den meisten anderen Befehlen nicht verwendet werden können.
  2. Verwenden Sie Get-Alias -Name %, um das tatsächliche Cmdlet zu ermitteln.
  3. Da Aliase die Lesbarkeit und Portabilität verringern, sind Skripte für andere schwieriger zu verstehen.
  4. Verwenden Sie Get-ChildItem -Path HKLM:\, HKCU:\, um Registrierungsschlüssel in beiden Hives aufzulisten.
  5. Der -replace Operator unterscheidet standardmäßig nicht zwischen Groß- und Kleinschreibung, während die .Replace() Methode dies tut.

Kapitel 6 – Ablaufsteuerung

  1. ForEach-Object verarbeitet Elemente einzeln aus der Pipeline (Streaming), während die foreach Anweisung Elemente aus einer Sammlung verarbeitet, die bereits in den Arbeitsspeicher geladen wurde.
  2. Eine while-Schleife wertet ihre Bedingung vor der Ausführung aus, sodass sie möglicherweise überhaupt nicht läuft, wenn die Bedingung falsch ist, im Gegensatz zu do while und do until, die mindestens einmal laufen.
  3. break beendet die Schleife vollständig, während continue die aktuelle Iteration überspringt und mit der nächsten fortfährt.

Kapitel 7 – Arbeiten mit WMI

  1. WMI-Cmdlets (z. B. Get-WmiObject) sind älter und verwenden DCOM, während CIM-Cmdlets (z. B. Get-CimInstance) neuer sind und WSMan standardmäßig verwenden.
  2. WSMan (Windows Remoteverwaltung).
  3. CIM-Sitzungen ermöglichen die Wiederverwendung von Verbindungen, unterstützen alternative Anmeldeinformationen, verbessern die Leistung und vereinfachen die Verwaltung mehrerer Remoteverbindungen.
  4. Erstellen Sie eine Sitzungsoption mit New-CimSessionOption, z. B. zum Verwenden von DCOM, und übergeben Sie sie an New-CimSession, und verwenden Sie diese Sitzung mit Get-CimInstance.
  5. Verwenden Sie Remove-CimSession.

Kapitel 8 – PowerShell-Remoting

  1. Verwenden Sie Enable-PSRemoting.
  2. Verwenden Sie Enter-PSSession.
  3. Sie können eine persistente Sitzung anstelle des Computernamens und der Anmeldeinformationen für jeden Befehl verwenden.
  4. Ja, Sie können eine PowerShell-Sitzung (PSSession) in einem 1:1 interaktiven Remotingszenario verwenden.
  5. Lokales Ausführen von Cmdlets geben Liveobjekte mit Methoden zurück, während Remotebefehle deserialisierte Objekte ohne Methoden zurückgeben.

Kapitel 9: Funktionen

  1. Verwenden Sie Get-Verb.
  2. Fügen Sie das [CmdletBinding()] Attribut der Funktion hinzu.
  3. Wenn die Funktion Änderungen am Systemzustand vornimmt oder potenziell betroffene Aktionen ausführt.
  4. Geben Sie -ErrorAction Stop an.
  5. So dokumentieren Sie die Nutzung der Funktion, damit Sie und andere sie leicht verstehen und auf Hilfe mit Get-Help zugreifen können.

Kapitel 10 – Skriptmodule

  1. Erstellen Sie eine .psm1 Datei, und platzieren Sie Ihre Funktionen darin.
  2. Durch die Verwendung genehmigter Verben wird Konsistenz gewährleistet, Warnungen vermieden und die Auffindbarkeit verbessert.
  3. Verwenden Sie New-ModuleManifest.
  4. Verwenden Sie Export-ModuleMember in der .psm1 Datei oder geben Sie Funktionen im FunctionsToExport Feld der .psd1 Datei an.
  5. Das Modul muss sich in einem Ordner mit dem Namen des Moduls befinden, der sich in einem in $env:PSModulePath aufgeführten Pfad befindet und die entsprechende Moduldatei (.psm1 oder Manifest) enthält.

Endgültige Notizen

  • Diese Antworten sind absichtlich prägnant, um wichtige Konzepte zu stärken.
  • Überarbeiten Sie die Kapitel, um tiefer zu verstehen.