Was ist PowerShell?What is PowerShell?

PowerShell ist ein Framework zur plattformübergreifenden Aufgabenautomatisierung und Konfigurationsverwaltung und besteht aus einer Befehlszeilenshell und Skriptsprache.PowerShell is a cross-platform task automation and configuration management framework, consisting of a command-line shell and scripting language. Im Gegensatz zu den meisten Shells, bei denen Text akzeptiert und zurückgegeben wird, basiert PowerShell auf der .NET Common Language Runtime (CLR) und akzeptiert und gibt .NET-Objekte zurück.Unlike most shells, which accept and return text, PowerShell is built on top of the .NET Common Language Runtime (CLR), and accepts and returns .NET objects. Diese grundlegende Änderung bringt völlig neue Tools und Methoden für die Automatisierung mit sich.This fundamental change brings entirely new tools and methods for automation.

Die Ausgabe ist objektbasiertOutput is object-based

Im Gegensatz zu herkömmlichen Befehlszeilenschnittstellen sind PowerShell-Cmdlets für den Umgang mit Objekten entworfen.Unlike traditional command-line interfaces, PowerShell cmdlets are designed to deal with objects. Ein Objekt setzt sich aus strukturierten Informationen zusammen und ist mehr als nur die Zeichenfolge, die auf dem Bildschirm erscheint.An object is structured information that is more than just the string of characters appearing on the screen. Die Befehlsausgabe umfasst immer zusätzliche Informationen, die Sie bei Bedarf nutzen können.Command output always carries extra information that you can use if you need it.

Wenn Sie in schon mal ein Textverarbeitungsprogramm zum Verarbeiten von Daten verwendet haben, werden Sie das abweichende Verhalten der Daten in PowerShell bemerken.If you've used text-processing tools to process data in the past, you'll find that they behave differently when used in PowerShell. In den meisten Fällen benötigen Sie kein Textverarbeitungsprogramm, um bestimmte Informationen zu extrahieren.In most cases, you don't need text-processing tools to extract specific information. Sie greifen mit der standardmäßigen PowerShell-Objektsyntax direkt auf Teile der Daten zu.You directly access portions of the data using standard PowerShell object syntax.

Die Befehlsfamilie ist erweiterbarThe command family is extensible

Schnittstellen wie cmd.exe bieten keine Möglichkeit zur direkten Erweiterung des integrierten Befehlssatzes.Interfaces such as cmd.exe don't provide a way for you to directly extend the built-in command set. Sie können externe Befehlszeilentools erstellen, die in cmd.exe ausgeführt werden.You can create external command-line tools that run in cmd.exe. Aber diese externen Tools umfassen keine Dienste wie z.B. eine integrierte Hilfe.But these external tools don't have services, such as Help integration. cmd.exe weiß nicht automatisch, dass es sich bei diesen externen Tools um gültige Befehle handelt.cmd.exe doesn't automatically know that these external tools are valid commands.

Die Befehle in PowerShell werden als Cmdlets bezeichnet.The commands in PowerShell are known as cmdlets. Sie können jedes Cmdlet einzeln verwenden, aber deren Leistungsfähigkeit wird freigesetzt, wenn Sie diese kombinieren, um komplexe Aufgaben auszuführen.You can use each cmdlet separately, but their power is realized when you combine them to perform complex tasks. Ähnlich wie viele Shells ermöglicht PowerShell Ihnen Zugriff auf das Dateisystem auf dem Computer.Like many shells, PowerShell gives you access to the file system on the computer. Mit PowerShell-Anbietern haben Sie die Möglichkeit, auf andere Datenspeicher, etwa die Registrierung und den Zertifikatspeicher, so einfach zuzugreifen wie auf das Dateisystem.PowerShell providers enable you to access other data stores, such as the registry and the certificate stores, as easily as you access the file system.

Mithilfe von kompiliertem Code oder Skripts können Sie eigene Cmdlets und Funktionsmodule erstellen.You can create your own cmdlet and function modules using compiled code or scripts. Mit Modulen können der Shell Cmdlets und Anbieter hinzugefügt werden.Modules can add cmdlets and providers to the shell. PowerShell bietet außerdem Unterstützung für Skripts, analog zu UNIX-Shellskripts und cmd.exe-Batchdateien.PowerShell also supports scripts that are analogous to UNIX shell scripts and cmd.exe batch files.

Unterstützung für BefehlsaliaseSupport for command aliases

PowerShell unterstützt Aliase, um mit alternativen Namen auf Befehle zu verweisen.PowerShell supports aliases to refer to commands by alternate names. Durch Aliase können Benutzer mit Erfahrung in anderen Shell-Umgebungen gängige Befehlsnamen, die sie bereits kennen, für ähnliche Vorgänge in PowerShell verwenden.Aliasing allows users with experience in other shells to use common command names that they already know for similar operations in PowerShell.

Bei der Aliasverwendung wird einem Befehl ein neuer Name zugeordnet.Aliasing associates a new name with another command. Beispielsweise umfasst PowerShell eine interne Funktion namens Clear-Host, mit der das Ausgabefenster gelöscht wird.For example, PowerShell has an internal function named Clear-Host that clears the output window. Sie können an einer Eingabeaufforderung entweder cls oder den Alias clear eingeben.You can type either the cls or clear alias at a command prompt. PowerShell interpretiert diese Aliase und führt die Funktion Clear-Host aus.PowerShell interprets these aliases and runs the Clear-Host function.

Dieses Feature unterstützt Benutzer beim Erlernen von PowerShell.This feature helps users to learn PowerShell. Zunächst beherrschen die meisten cmd.exe- und Unix-Benutzer ein großes Repertoire an Befehlen, deren Namen sie bereits kennen.First, most cmd.exe and Unix users have a large repertoire of commands that users already know by name. Die PowerShell-Äquivalente führen möglicherweise nicht zu identischen Ergebnissen.The PowerShell equivalents may not produce identical results. Dennoch sind die Ergebnisse ähnlich genug, um Benutzern das Arbeiten ohne Kenntnis der PowerShell-Befehlsnamen zu ermöglichen.However, the results are close enough that users can do work without knowing the PowerShell command name. Das „Muskelgedächtnis“ ist eine weitere Quelle für Frustrationen beim Erlernen einer neuen Befehlsshell."Muscle memory" is another major source of frustration when learning a new command shell. Wenn Sie seit Jahren cmd.exe verwenden, geben Sie möglicherweise reflexartig den Befehl cls ein, um den Bildschirm zu löschen.If you have used cmd.exe for years, you might reflexively type the cls command to clear the screen. Ohne den Alias für Clear-Host erhalten Sie eine Fehlermeldung und wissen nicht, wie Sie zum Löschen der Ausgabe vorgehen müssen.Without the alias for Clear-Host, you receive an error message and won't know what to do to clear the output.

PowerShell verarbeitet Konsoleneingabe und AnzeigePowerShell handles console input and display

Wenn Sie einen Befehl eingeben, verarbeitet PowerShell die Befehlszeileneingabe immer sofort.When you type a command, PowerShell always processes the command-line input directly. PowerShell formatiert darüber hinaus die Ausgabe, die auf dem Bildschirm angezeigt wird.PowerShell also formats the output that you see on the screen. Dieser Unterschied ist wesentlich, weil dadurch die Arbeit für jedes Cmdlet verringert wird.This difference is significant because it reduces the work required of each cmdlet. Es wird sichergestellt, dass Sie Aufgaben mit beliebigen Cmdlets immer gleich ausführen können.It ensures that you can always do things the same way with any cmdlet. Cmdlet-Entwickler müssen keinen Code schreiben, mit dem die Befehlszeilenargumente analysiert oder die Ausgabe formatiert wird.Cmdlet developers don't need to write code to parse the command-line arguments or format the output.

Herkömmliche Befehlszeilentools haben eigene Schemas zum Anfordern und Anzeigen von Hilfe.Traditional command-line tools have their own schemes for requesting and displaying Help. Einige Befehlszeilentools verwenden /? zum Aufrufen der Hilfe, während andere -?, /H oder // verwenden.Some command-line tools use /? to trigger the Help display; others use -?, /H, or even //. Bei einigen wird Hilfe in einem Fenster auf der grafischen Benutzeroberfläche und nicht in der Konsole angezeigt.Some will display Help in a GUI window, rather than in the console display. Wenn Sie den falschen Parameter verwenden, ignoriert das Tool möglicherweise Ihre Eingabe und beginnt damit, automatisch einen Task auszuführen.If you use the wrong parameter, the tool might ignore what you typed and begin executing a task automatically. Da PowerShell die Befehlszeile automatisch analysiert und verarbeitet, bedeutet der Parameter -? immer „Hilfe für diesen Befehl anzeigen“.Since PowerShell automatically parses and processes the command line, the -? parameter always means "show me Help for this command".

Hinweis

Wenn Sie eine grafische Anwendung in PowerShell ausführen, wird das Fenster für die Anwendung geöffnet.If you run a graphic application in PowerShell, the window for the application opens. PowerShell greift nur beim Verarbeiten der angegebenen Befehlszeileneingabe oder zur Ausgabe der Anwendungsergebnisse im Konsolenfenster ein.PowerShell intervenes only when processing the command-line input you supply or the application output returned to the console window. PowerShell hat keinen Einfluss darauf, wie die Anwendung intern arbeitet.It does not affect how the application works internally.

Die PowerShell-PipelinePowerShell has a pipeline

Pipelines sind wohl das wertvollste Konzept, das Befehlszeilenschnittstellen verwendet wird.Pipelines are arguably the most valuable concept used in command-line interfaces. Bei richtigem Einsatz verringern Pipelines den Aufwand durch die Verwendung von komplexen Befehlen und erleichtern es, den Ablauf zu sehen.When used properly, pipelines reduce the effort of using complex commands and make it easier to see the flow of work. Jeder Befehl in einer Pipeline gibt seine Ausgabe Element für Element an den nächsten Befehl weiter.Each command in a pipeline passes its output, item by item, to the next command. Befehle müssen jeweils nur ein Element zurzeit verarbeiten.Commands don't have to handle more than one item at a time. Das Ergebnis ist eine verringerte Ressourcennutzung und die Möglichkeit, die Ausgabe unmittelbar zu erhalten.The result is reduced resource consumption and the ability to get output immediately.

Die Notation für Pipelines ist der Notation in anderen Shells ähnlich.The notation used for pipelines is similar to the notation used in other shells. Auf den ersten Blick ist es möglicherweise nicht offensichtlich, wie sich Pipelines in PowerShell unterscheiden.At first glance, it may not be apparent how pipelines are different in PowerShell. Obwohl Text auf dem Bildschirm angezeigt wird, leitet PowerShell Objekte und keinen Text zwischen Befehlen weiter.Although you see text on the screen, PowerShell pipes objects, not text, between commands.

Wenn Sie beispielsweise das Cmdlet Out-Host zum Erzwingen einer seitenweisen Anzeige der Ausgabe eines anderen Befehls verwenden, sieht die Ausgabe wie der normale auf dem Bildschirm gezeigte Text aus, der in Seiten unterteilt ist:For example, if you use the Out-Host cmdlet to force a page-by-page display of output from another command, the output looks just like the normal text displayed on the screen, broken up into pages:

Get-ChildItem | Out-Host -Paging
    Directory: /mnt/c/Git/PS-Docs/PowerShell-Docs/reference/7.0/Microsoft.PowerShell.Core

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          05/22/2020    08:30                About
-----          05/20/2020    14:36           9044 Add-History.md
-----          05/20/2020    14:36          12227 Clear-History.md
-----          05/20/2020    14:36           3566 Clear-Host.md
-----          05/20/2020    14:36          29087 Connect-PSSession.md
-----          05/20/2020    14:36           5705 Debug-Job.md
-----          05/20/2020    14:36           3515 Disable-ExperimentalFeature.md
-----          05/20/2020    14:36          25531 Disable-PSRemoting.md
-----          05/20/2020    14:36           7852 Disable-PSSessionConfiguration.md
-----          05/20/2020    14:36          25355 Disconnect-PSSession.md
-----          05/20/2020    14:36           3491 Enable-ExperimentalFeature.md
-----          05/20/2020    14:36          13310 Enable-PSRemoting.md
-----          05/20/2020    14:36           8401 Enable-PSSessionConfiguration.md
-----          05/20/2020    14:36           9531 Enter-PSHostProcess.md
...
<SPACE> next page; <CR> next line; Q quit

Durch die Einteilung in Seiten wird auch die CPU-Auslastung reduziert, da die Verarbeitung an das Cmdlet Out-Host übertragen wird, wenn eine vollständige Seite für die Anzeige bereit ist.Paging also reduces CPU utilization because processing transfers to the Out-Host cmdlet when it has a complete page ready to display. Die Cmdlets, die sich in der Pipeline davor befinden, unterbrechen die Ausführung, bis die nächste Seite der Ausgabe verfügbar ist.The cmdlets that precede it in the pipeline pause execution until the next page of output is available.

Objekte in der PipelineObjects in the pipeline

Wenn Sie ein Cmdlet in PowerShell ausführen, sehen Sie eine Textausgabe, da es erforderlich ist, Objekte in einem Konsolenfenster als Text darzustellen.When you run a cmdlet in PowerShell, you see text output because it is necessary to represent objects as text in a console window. Die Textausgabe enthält möglicherweise nicht alle Eigenschaften des Objekts, das ausgegeben wird.The text output may not display all of the properties of the object being output.

Betrachten Sie beispielsweise das Cmdlet Get-Location.For example, consider the Get-Location cmdlet. Die Textausgabe ist eine Zusammenfassung der Informationen, keine vollständige Darstellung des Objekts, das von Get-Location zurückgegeben wird.The text output is a summary of information, not a complete representation of the object returned by Get-Location. Die Überschrift in der Ausgabe wird durch den Prozess hinzugefügt, der die Daten für die Anzeige auf dem Bildschirm formatiert.The heading in the output is added by the process that formats the data for onscreen display.

Get-Location
Path
----
C:\

Wenn Sie die Ausgabe an das Cmdlet Get-Member weiterleiten, werden Informationen über das Objekt angezeigt, das von Get-Location zurückgegeben wird.Piping the output to the Get-Member cmdlet displays information about the object returned by Get-Location.

Get-Location | Get-Member
   TypeName: System.Management.Automation.PathInfo

Name         MemberType Definition
----         ---------- ----------
Equals       Method     bool Equals(System.Object obj)
GetHashCode  Method     int GetHashCode()
GetType      Method     type GetType()
ToString     Method     string ToString()
Drive        Property   System.Management.Automation.PSDriveInfo Drive {get;}
Path         Property   string Path {get;}
Provider     Property   System.Management.Automation.ProviderInfo Provider {get;}
ProviderPath Property   string ProviderPath {get;}

Get-Location gibt ein PathInfo-Objekt zurück, das den aktuellen Pfad und andere Informationen enthält.Get-Location returns a PathInfo object that contains the current path and other information.

Integriertes HilfesystemBuilt-in help system

Ähnlich wie bei man-Seiten, umfasst PowerShell ausführliche Hilfeartikel, in denen die Konzepte von PowerShell und die Befehlssyntax erläutert werden.Similar to Unix man pages, PowerShell includes detailed help articles that explain PowerShell concepts and command syntax. Verwenden Sie das Cmdlet Get-Help, um diese Artikel über die Eingabeaufforderung anzuzeigen. Sie können aber auch die zuletzt aktualisierten Versionen dieser Artikel in der PowerShell-Dokumentation online anzeigen.Use the Get-Help cmdlet to display these articles at the command prompt or view the most recently updated versions of these articles in the PowerShell documentation online.

Nächste SchritteNext steps

Weitere Informationen zu PowerShell erhalten Sie im Abschnitt Erlernen von PowerShell auf dieser Website.To learn more about PowerShell, see the Learning PowerShell section of this site.