Cmdlet: Prozess- und Dienstverwaltung
Die Verwaltung von Prozessen und Diensten ist ein sehr wichtiger Teil der Systemwartung und automatisierter Abläufe.
PowerShell bietet einen prägnanten und dennoch leistungsstarken Satz von Cmdlets zum Anzeigen, Starten, Beenden, Filtern und Steuern von Prozessen und Diensten auf lokalen (oder entfernten) Computern.
In diesem Abschnitt wird ausführlich erklärt, wie Sie PowerShell zum Verwalten von Prozessen und Diensten verwenden, einschließlich grundlegender Betriebsbefehle, typischer Anwendungsszenarien und häufiger Probleme, um Ihre Effizienz bei der Systemverwaltung zu verbessern.
1. Prozessverwaltung (Prozess)
PowerShell verwendet.NETProzessobjekte, um Prozessvorgänge zu handhaben. Häufige Cmdlets sind:
| Cmdlet | Funktion |
|---|---|
Get-Process |
Laufende Prozesse abrufen |
Stop-Process |
Angegebene Prozesse beenden |
Start-Process |
Einen neuen Prozess (Programm) starten |
Wait-Process |
Warten, bis ein Prozess endet |
Prozesse anzeigen:Get-Process
Alle laufenden Prozesse anzeigen:
Get-Process
Einen bestimmten Prozess anzeigen (z. B. notepad):
Get-Process -Name notepad
Mehrere Prozesse anzeigen:
Get-Process -Name chrome, notepad
Prozessdetails abrufen und sortieren:
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
Stop-Process
Nach Prozessname beenden:
Stop-Process -Name notepad
Nach Prozess-ID beenden:
Stop-Process -Id 1234
Prozesse zwangsweise beenden (um interaktive Eingabeaufforderungen zu vermeiden):
Stop-Process -Name notepad -Force
Prozesse starten:Start-Process
Notepad öffnen:
Start-Process notepad
PowerShell als Administrator öffnen (das aktuelle Fenster benötigt Berechtigung):
Start-Process powershell -Verb RunAs
Starten Sie einen Webbrowser und besuchen Sie eine URL:
Start-Process "https://learn.microsoft.com"
Auf Prozesse warten:Wait-Process
Fortfahren, nachdem der Prozess die Ausführung beendet hat:
Start-Process notepad Wait-Process -Name notepad Write-Output "记事本已关闭"
2. Dienstverwaltung (Dienst)
PowerShell bietet umfassende Unterstützung für die Dienstverwaltung. Gängige Cmdlets sind wie folgt:
| Cmdlet | Funktionsbeschreibung |
|---|---|
Get-Service |
Dienststatus anzeigen |
Start-Service |
Einen Dienst starten |
Stop-Service |
Einen Dienst stoppen |
Restart-Service |
Einen Dienst neu starten |
Set-Service |
Diensteigenschaften ändern |
Dienste anzeigen:Get-Service
Alle Dienste anzeigen:
Get-Service
Laufende Dienste filtern:
Get-Service | Where-Object {$_.Status -eq "Running"}
Einen bestimmten Dienst anzeigen:
Get-Service -Name W32Time
Dienste starten und beenden
Den Windows-Zeitdienst starten:
Start-Service -Name W32Time
Einen Dienst beenden (bei unzureichenden Berechtigungen kann ein Fehler auftreten):
Stop-Service -Name W32Time
Dienste neu starten:Restart-Service
Restart-Service -Name W32Time
Diensteinstellungen ändern:Set-Service
Den Dienststarttyp auf Automatisch setzen:
Set-Service -Name W32Time -StartupType Automatic
Einen Dienst deaktivieren:
Set-Service -Name W32Time -StartupType Disabled
3. Unterschiede zwischen Diensten und Prozessen
| Vergleichspunkt | Service | Process |
|---|---|---|
| Startmethode | Automatischer Start / Manueller Start / Deaktiviert | Manuell durch den Benutzer oder durch ein Programm ausgelöst |
| Ausführungszustand | Läuft kontinuierlich im Hintergrund, normalerweise ohne Benutzeroberfläche | Kann im Vordergrund interagieren, mit einem kürzeren Lebenszyklus |
| Verwaltungsmethode | Get-Service, Start-Servicewarten |
Get-Process, Start-Processwarten |
| Beispiel | Windows Update(wuauserv) | Notepad, chrome.exe usw. |
4. Praktische Beispiele
Beispiel 1: Erkennen und Neustarten eines Dienstes, der ungewöhnlich beendet wurde
$svc = Get-Service -Name Spooler
if ($svc.Status -ne "Running") {
Restart-Service -Name Spooler
Write-Output "服务已重启"
}
Beispiel 2: Alle Prozesse mit einer CPU-Auslastung über 50 schließen (mit Vorsicht verwenden)
Get-Process | Where-Object { $_.CPU -gt 50 } | Stop-Process -Force
Hinweis: Solche Vorgänge müssen in einer Testumgebung oder erst dann durchgeführt werden, wenn bestätigt ist, dass kein Risiko besteht.
5. Häufige Probleme und Vorsichtsmaßnahmen
| Problem | Grund und vorgeschlagene Erklärung |
|---|---|
| Dienst kann nicht beendet werden | Administratorberechtigungen sind erforderlich. Es wird empfohlen, "Run as administrator" zu verwenden |
| Falsche Schreibweise des Prozessnamens oder Dienstnamens | Sie können zunächstGet-ProcessoderGet-Serviceum den genauen Namen zu erhalten |
| Der Dienst wurde beendet, wird aber weiterhin als Running angezeigt | Einige Dienste verfügen über Schutzmechanismen. Es wird empfohlen,Restart-Serviceeinen Neustart zu versuchen |
6. Zusammenfassung
PowerShell macht die Verwaltung von Prozessen und Diensten durch seinen standardisierten Befehlssatz einfach und effizient:
- Verwenden Sie
Get-*um Informationen anzuzeigen,Start-*/Stop-*um Verhalten zu steuern,Set-*um Eigenschaften zu ändern - Pipeline + bedingte Filterung + Objektoperationen eignen sich für Batch-Verwaltungsaufgaben
- Es kann mit geplanten Aufgaben und Überwachungsskripten kombiniert werden, um ein automatisiertes Ops-System aufzubauen