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 filternSelect-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
- Eine Konfigurationsdatei schreiben (
.ps1) - Sie in eine MOF-Datei kompilieren
- 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 anzeigenGet-Command: Alle Befehle auflistenGet-Member: Objekteigenschaften und -methoden anzeigenGet-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 |