PowerShell-Kernkonzepte

PowerShell ist nicht nur ein Befehlszeilentool; seine Designphilosophie, funktionale Architektur und Verwendung unterscheiden sich erheblich von traditionellen Shells.


1. Cmdlet: Die kleinste Befehlseinheit

Was ist ein Cmdlet?

Ein Cmdlet (ausgesprochencommand-let) ist die grundlegendste Befehlseinheit in PowerShell. Cmdlets sind .NET-basierte Klassen, die ein oder mehrere.NET-Objekte zurückgeben。

Namenskonvention: Verb-Substantiv

Jedes Cmdlet folgt derVerb-SubstantivNamenskonvention, zum Beispiel:

Cmdlet Bedeutung
Get-Process Prozessinformationen abrufen
Set-Item Den Wert eines Ressourcenelements festlegen
Remove-Item Dateien, Registrierungsschlüssel usw. löschen
New-User Einen neuen Benutzer erstellen (wenn das AD-Modul installiert ist)

PowerShell wird mit Hunderten von Cmdlets ausgeliefert, und Drittanbietermodule können viele weitere definieren.

Beispiel

Get-Service
Get-ChildItem -Path C:\Windows

Du kannst auchGet-Commandum alle verfügbaren Cmdlets anzuzeigen:

Get-Command -CommandType Cmdlet

2. Objekt-Pipeline

Was ist der Unterschied zu UNIX/Linux-Pipes?

In traditionellen Shells übergibt die Pipe (|) Textzeichenfolgen. In PowerShell hingegenübergibt die Pipeline vollständige .NET-Objekte。

Das bedeutet, dass Sie strukturierte Daten (Eigenschaften, Methoden) für die weitere Verarbeitung beibehalten können.

Beispiel: Prozesse nach CPU-Auslastung filtern

Get-Process | Where-Object { $_.CPU -gt 100 } | Select-Object Name, CPU

Im obigen Befehl:

  • Get-ProcessAlle Prozesse abrufen (gibt Objekte zurück)
  • Where-ObjectProzesse mit CPU-Auslastung größer als 100 filtern
  • Select-ObjectNur die ausgebenNameundCPUFeld

Die Schönheit des Weiterleitens von Objekten

Sie brauchen keine Tools wieawk、cut、grepum die Ausgabe zu "parsen"; stattdessen arbeiten Sie direkt mit Objekteigenschaften.


3. Provider und PSDrive: Abstraktion von Ressourcenlaufwerken

PowerShell bietet eine einheitliche Möglichkeit, auf Ressourcen zuzugreifen:das Provider-Modell, das verschiedene Ressourcen virtuellen Laufwerken (PSDrive) zuordnet, genau wieC:das Bedienen eines Laufwerks.

Häufige Provider-Typen

Provider Beispiel-Laufwerk Beschreibung
FileSystem C:, D: Lokales Dateisystem
Registry HKLM:, HKCU: Windows-Registrierung
Umgebung Env: Umgebungsvariablen
Zertifikat Cert: Zertifikatsspeicher
Funktion Function: Funktionen in der aktuellen Sitzung
Variable Variable: Aktuell definierte Variablen
Alias Alias: Befehlsaliase

Beispiel: Arbeiten mit der Registrierung

Get-ChildItem HKLM:\Software\Microsoft

Durchsuchen Sie die Registrierung wie Ordner.


4. Skripte und Module: Organisation und Wiederverwendung

Skripte (.ps1)

  • PowerShell-Skripte sind Textdateien mit der.ps1Dateiendung
  • Sie enthalten eine Reihe von Befehlen, Ablaufsteuerung, Funktionen usw.

Module (.psm1 / .psd1)

Ein Modul ist eine wiederverwendbare funktionale Einheit in PowerShell. Es kann sein:

  • a.psm1Datei (Modulskript)
  • einen Ordner, der ein.psd1Manifest (erweitertes Modul)

Modulunterstützung:

  • Automatisches Laden(automatisch geladen, wenn seine Funktionen verwendet werden)
  • Versionierung
  • Abhängigkeitsdeklarationen

Alle Module im System anzeigen:

Get-Module -ListAvailable

Ein Modul importieren:

Import-Module Az

5. Ausführungsrichtlinie

Um zu verhindern, dass bösartige Skripte ausgeführt werden, hat PowerShell dieAusführungsrichtlinie(Execution Policy) eingeführt, die.ps1das Ausführungsverhalten von Skriptdateien einschränkt.

Gängige Richtlinientypen

Policy Bedeutung
Restricted Standard; es dürfen keine Skripts ausgeführt werden
RemoteSigned Erlaubt die Ausführung lokaler Skripts; Remote-Skripts müssen signiert sein
AllSigned Alle Skripts müssen signiert sein
Bypass Unrestricted; nicht für die Produktion empfohlen

Festlegen der Ausführungsrichtlinie

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

⚠️ Hinweis: Die Ausführungsrichtlinie betrifft nur Skriptdateien; sie schränkt manuell eingegebene Befehle nicht ein.


6. Remoteverwaltung (PowerShell-Remoting)

PowerShell Remoting unterstützt das Herstellen einer Verbindung zu einem anderen Computer aus der Ferne und das Ausführen von Befehlen über dasWS-MAN (basierend auf WinRM)oderSSH-Protokoll.

Aktivieren von WinRM (unter Windows)

Enable-PSRemoting -Force

Häufige Befehle

# 建立远程会话
Enter-PSSession -ComputerName Server01

# 批量执行命令
Invoke-Command -ComputerName Server01,Server02 -ScriptBlock { Get-Service }

Plattformübergreifendes Remoting mit SSH-Unterstützung

Enter-PSSession -HostName linux01 -User user1 -SSHTransport

7. Desired State Configuration (DSC)

DSC (Desired State Configuration) ist PowerShellsdeklarative Konfigurationsplattform, mit der der "gewünschte Zustand" eines Systems definiert wird.

Es ermöglicht Ihnen:

  • Ressourcenzustände mit Konfigurationsskripten definieren (z. B. ein Dienst sollte ausgeführt werden, eine Datei sollte vorhanden sein)
  • Den Computer automatisch in diesen Zustand konfigurieren
  • Abweichungen erkennen und automatisch beheben

Verwendung

  1. Eine Konfigurationsdatei schreiben (.ps1)
  2. Sie in eine MOF-Datei kompilieren
  3. Im Push- oder Pull-Modus bereitstellen

DSC ist besonders nützlich für Serverkonfiguration im großen Maßstab, Compliance-Prüfungen und automatisierte Bereitstellung.


8. Befehlsermittlung und Hilfesystem

PowerShell bietet ein umfangreiches Hilfesystem, mit dem Sie Befehle einfach erkunden können:

  • Get-Help Get-Process: Befehlshilfe anzeigen
  • Get-Command: Alle Befehle auflisten
  • Get-Member: Objekteigenschaften und -methoden anzeigen
  • Get-Help about_*: Integrierte Wissensdokumente anzeigen (wie z. B.about_Execution_Policies)

Beispiel: Anzeigen der Objektstruktur

Get-Process | Get-Member

Zusammenfassung

Konzept Schlüsselwort Kurzbeschreibung
Cmdlet verb-noun Kleinste Ausführungseinheit, basierend auf .NET
Pipeline ` ` Übergibt Objekte statt Text
Provider FileSystem, Env: Einheitlicher Zugriff auf verschiedene Ressourcen
Modul .psm1, .psd1 Organisiert wiederverwendbare Befehlssammlungen
Ausführungsrichtlinie Set-ExecutionPolicy Steuert die Berechtigungen für die Skriptausführung
Remote-Verwaltung Enter-PSSession Befehle remote ausführen
DSC Configuration Deklarative Systemkonfigurationsplattform
Hilfesystem Get-Help Integriertes Dokumentationssystem
Weitere Erweiterungen