THEMA
    about_Windows_PowerShell_2.0

KURZBESCHREIBUNG
    Beschreibt die neuen Features von Windows PowerShell 2.0.
 

DETAILBESCHREIBUNG
    Windows PowerShell 2.0 enthält mehrere wichtige Features, mit 
    denen die Verwendungsmöglichkeiten erweitert und die 
    Benutzerfreundlichkeit erhöht werden, und die Steuerung und 
    Verwaltung von Windows-basierten Umgebungen wird verbessert und 
    erleichtert.


    Windows PowerShell 2.0 ist abwärtskompatibel. Cmdlets, Anbieter, 
    Snap-Ins, Skripts, Funktionen und Profile, die für Windows 
    PowerShell 1.0 entworfen wurden, können ohne Änderungen auch in 
    Windows PowerShell 2.0 verwendet werden.


NEUE FEATURES
    Windows PowerShell 2.0 enthält die nachfolgend aufgeführten neuen 
    Features.


  Remoting
    
      In Windows PowerShell 2.0 können Sie Befehle mit einem 
      einzelnen Windows PowerShell-Befehl auf einem oder mehreren 
      Remotecomputern ausführen. Sie können einzelne Befehle 
      ausführen, oder Sie können eine dauerhafte Verbindung (Sitzung) 
      erstellen, um eine Reihe von verwandten Befehlen auszuführen. 
      Sie können auch eine Sitzung mit einem Remotecomputer starten, 
      damit die eingegebenen Befehle direkt auf dem Remotecomputer 
      ausgeführt werden.


      Die Remotingfeatures von Windows PowerShell basieren auf der 
      Windows-Remoteverwaltung (WinRM). WinRM ist die Implementierung 
      des WS-Management-Protokolls von Microsoft. Dabei handelt es 
      sich um ein Standardkommunikationsprotokoll auf SOAP-Basis, das 
      mit Firewalls kompatibel ist.


      Auf den Remotecomputern müssen Windows PowerShell 2.0, 
      Microsoft .NET Framework 2.0 sowie der WinRM-Dienst installiert 
      sein. Remotebefehle werden unter allen Betriebssystemen 
      unterstützt, die Windows PowerShell ausführen können. Der 
      aktuelle Benutzer muss die Berechtigung haben, Befehle auf den 
      Remotecomputern auszuführen. Weitere Informationen finden Sie 
      unter "about_Remote_Requirements".


      Um Remoting zu unterstützen, wurden die Cmdlets "Invoke-Command"
      , "Enter-PSSession" und "Exit-PSSession" zusammen mit anderen 
      Cmdlets hinzugefügt, die das Substantiv "PSSession" enthalten. 
      Mit diesen Cmdlets können Sie dauerhafte Verbindungen erstellen 
      und verwalten.


      Außerdem wurde der ComputerName-Parameter mehreren Cmdlets 
      einschließlich "Get-Process", "Get-Service" und "Get-Eventlog" 
      hinzugefügt. Mit diesem Parameter können Sie Informationen über 
      Remotecomputer abrufen.
      Diese Cmdlets rufen die Daten mit .NET Framework-Methoden ab 
      und benötigen Windows PowerShell-Remoting daher nicht. Neue 
      Programme oder eine neue Konfiguration sind nicht erforderlich. 
      Weitere Informationen finden Sie in der Hilfe für das jeweilige 
      Cmdlet.


      Weitere Informationen über Remotebefehle finden Sie unter 
      "about_Remote" und unter "about_Remote_FAQ". Weitere 
      Informationen über Sitzungen finden Sie unter "about_PSSessions". 


  Windows PowerShell ISE
    
      Windows PowerShell 2.0 enthält die integrierte Skriptumgebung 
      von Windows PowerShell (ISE), eine Hostanwendung, mit der Sie 
      Befehle ausführen und Skripts in einer grafischen und 
      farbcodierten Umgebung auf Unicode-Basis entwerfen, schreiben, 
      testen und debuggen können.
 

      Windows PowerShell ISE erfordert Microsoft .NET Framework 3.0 
      oder höher.


      Windows PowerShell ISE enthält Folgendes:

      -  Ein Befehlsbereich, in dem Sie interaktive Befehle wie in 
         der Windows PowerShell-Konsole ausführen können. Geben Sie 
         einfach einen Befehl ein, und drücken Sie die EINGABETASTE. 
         Die Ausgabe wird im Ausgabebereich angezeigt.

      -  Ein Skriptbereich, in dem Sie Funktionen und Skripts 
         erstellen, bearbeiten, debuggen und ausführen können. 

      -  Mehrere Registerkarten, die jeweils über einen 
         Befehlsbereich und einen Skriptbereich verfügen, in denen 
         Sie eine oder mehrere Aufgaben unabhängig voneinander 
         bearbeiten können.


      Windows PowerShell ISE ist sowohl für neue als auch für 
      fortgeschrittene Benutzer geeignet. 


  Hintergrundaufträge
    
      Hintergrundaufträge sind Befehle, die asynchron ausgeführt 
      werden. Wenn Sie einen Hintergrundauftrag ausführen, wird die 
      Eingabeaufforderung unmittelbar zurückgegeben, auch wenn der Befehl noch 
      ausgeführt wird. Mit dem Hintergrundauftragsfeature können Sie 
      komplexe Befehle im Hintergrund ausführen, um die Sitzung für andere 
      Aufgaben zu nutzen, während der Befehl ausgeführt wird.


      Hintergrundaufträge können auf einem lokalen Computer oder auf einem 
      Remotecomputer ausgeführt werden, und die Ergebnisse können auf einem 
      lokalen Computer oder auf einem Remotecomputer gespeichert werden. 
      Mit dem Cmdlet "Invoke-Command" können Sie einen Auftrag remote ausführen.
    

      Windows PowerShell enthält einen Satz von Cmdlets, die das 
      Substantiv "Job" enthalten (Job-Cmdlets). Verwenden Sie diese 
      Cmdlets zum Erstellen, Starten, Verwalten und Löschen von 
      Hintergrundaufträgen sowie zum Abrufen der Ergebnisse eines 
      Hintergrundauftrags. Um eine Liste der Job-Cmdlets abzurufen, 
      geben Sie den folgenden Befehl ein:

          get-command *-job

      
      Weitere Informationen über Hintergrundaufträge finden Sie unter 
      "about_Jobs".


  Skriptdebugger
    
      Windows PowerShell 2.0 enthält einen Cmdlet-basierten Debugger 
      für Skripts und Funktionen. Der Debugger wird durch eine 
      vollständig dokumentierte öffentliche API unterstützt, mit der 
      Sie eigene Debugger erstellen oder Debugger anpassen oder 
      erweitern können.


      Mit den Debugger-Cmdlets können Sie Haltepunkte in Zeilen, Spalten, 
      Variablen und Befehlen festlegen. Diese Cmdlets ermöglichen die 
      Verwaltung der Haltepunkte und das Anzeigen der Aufrufliste. Sie 
      können bedingte Haltepunkte erstellen und benutzerdefinierte Aktionen 
      für Haltepunkte festlegen, beispielsweise das Ausführen von Diagnose- 
      und Protokollskripts.


      Wenn Sie einen Haltepunkt erreichen, unterbricht Windows 
      PowerShell die Ausführung und startet den Debugger. Der 
      Debugger enthält einen Satz von benutzerdefinierten Befehlen, 
      mit denen Sie den Code schrittweise durchlaufen können. Sie 
      können auch Standardbefehle von Windows PowerShell ausführen, 
      um die Werte von Variablen anzuzeigen, und Sie können die 
      Ergebnisse mit Cmdlets untersuchen.

      
      Weitere Informationen zum Debuggen finden Sie unter 
      "about_Debuggers".


  Datenabschnitt
    
      Skripts, die für Windows PowerShell 2.0 entworfen wurden, 
      weisen einen oder mehrere DATA-Abschnitte auf, die die Daten 
      von der Skriptlogik trennen. Die Daten im neuen DATA-Abschnitt 
      sind auf eine angegebene Teilmenge der Windows PowerShell-
      Skriptsprache beschränkt.


      In Windows PowerShell 2.0 wird der DATA-Abschnitt verwendet, um 
      die Skriptinternationalisierung zu unterstützen. Mit dem 
      DATA-Abschnitt können Sie Benutzermeldungszeichenfolgen 
      identifizieren und isolieren, die in mehrere Benutzerober-
      flächensprachen übersetzt werden. 


      Weitere Informationen finden Sie unter "about_Data_Sections".


  Skriptinternationalisierung
    
      Die Features zur Skriptinternationalisierung von Windows 
      PowerShell 2.0 ermöglichen es Ihnen, besser auf Benutzer in der 
      ganzen Welt einzugehen. Dank der Skriptinternationalisierung 
      können Skripts und Funktionen Meldungen und Hilfetext in 
      mehreren Sprachen anzeigen.
 

      Die Features zur Skriptinternationalisierung fragen die im 
      Betriebssystem festgelegte Benutzeroberflächenkultur 
      ($PsUICulture) während der Ausführung ab und importieren die 
      entsprechenden übersetzten Textzeichenfolgen, um sie 
      anschließend dem Benutzer anzuzeigen.
      Im Datenabschnitt können Sie Textzeichenfolgen getrennt von 
      Code speichern, sodass sie bequem identifiziert werden können. 
      Das neue Cmdlet "ConvertFrom-StringData" konvertiert 
      Textzeichenfolgen in wörterbuchähnliche Hashtabellen, um die 
      Übersetzung zu erleichtern.
 

      Weitere Informationen finden Sie unter 
      "about_Script_Internationalization".



  WMI-Cmdlets
    
      Die Funktionalität für die Windows-Verwaltungsinstrumentation 
      (Windows Management Instrumentation, WMI) von Windows 
      PowerShell 2.0 wurde durch Hinzufügen der folgenden Cmdlets 
      verbessert:

          - Remove-WmiObject
          - Set-WmiInstance
          - Invoke-WmiMethod


      Dem Cmdlet "Get-WmiObject" wurden neue Parameter hinzugefügt. 
      Alle WMI- Cmdlets unterstützen jetzt die folgenden Parameter:

          - EnableAllPrivileges
          - Impersonation
          - Authentication
          - Authority


      Die neuen Parameter verbessern die Kontrolle über die 
      Sicherheitskonfiguration von WMI-Vorgängen, ohne dass die Typen 
      in der .NET Framework-Klassenbibliothek direkt bearbeitet 
      werden müssen.

 
      Mit dem folgenden Befehl können Sie eine Liste der WMI-Cmdlets 
      anzeigen:

          get-help *wmi*

      Geben Sie "get-help" und anschließend den Namen des Cmdlets 
      ein, um die entsprechende Hilfe anzuzeigen.

	
  Das Cmdlet "Get-WinEvent"
    
      Das Cmdlet "Get-WinEvent" ruft Ereignisse aus den Protokollen 
      der Ereignisanzeige und aus der Ereignisablaufverfolgung für 
      Windows (Event Tracing for Windows, ETW) auf lokalen Computern 
      und auf Remotecomputern ab. Mit dem Cmdlet können Ereignisse 
      aus klassischen Ereignisprotokollen und aus Windows-Ereignispro-
      tokollen abgerufen werden, die unter Windows Vista eingeführt 
      wurden.
 

      Mit Get-WinEvent können Sie die Objekte abrufen, die 
      Ereignisprotokolle, Ereignisprotokollanbieter und die 
      Ereignisse in den Protokollen darstellen. Mit Get-WinEvent 
      können Sie Ereignisse aus verschiedenen Quellen in einem Befehl 
      kombinieren. Das Cmdlet unterstützt erweiterte Abfragen in der 
      XML-Pfadsprache XPath, in XML und im Hashtabellenformat.


      Get-WinEvent erfordert Windows Vista oder Windows Server 2008 
      und Microsoft .NET Framework 3.5. 


  Das Cmdlet "Out-Gridview"
    
      Das Cmdlet "Out-GridView" zeigt die Ergebnisse anderer Befehle 
      in einer interaktiven Tabelle an, in der Sie die Ergebnisse 
      durchsuchen, sortieren, anordnen und filtern können. 
      Beispielsweise können Sie die Ergebnisse der Befehle 
      "Get-Process", "Get-WmiObject", "Get-WinEvent" oder 
      "Get-Eventlog" an Out-GridView senden und dann die 
      Tabellenfeatures verwenden, um die Daten zu untersuchen.

        help out-gridview -full


  Das Cmdlet "Add-Type"
    
      Mit dem Cmdlet "Add-Type" können Sie Windows PowerShell .NET 
      Framework-Typen aus dem Quellcode einer anderen .NET 
      Framework-Sprache hinzufügen.
 

      Add-Type kompiliert den Quellcode, mit dem die Typen erstellt 
      und die Assemblys generiert werden, die die neuen .NET 
      Framework-Typen enthalten. Anschließend können Sie die .NET 
      Framework-Typen in Windows PowerShell-Befehlen mit den von .NET 
      Framework bereitgestellten Standardobjekttypen verwenden.


      Sie können mit Add-Type auch Assemblys in die Sitzung laden, 
      damit Sie die Typen in den Assemblys in Windows PowerShell 
      verwenden können.


      Add-Type ermöglicht das Entwickeln neuer .NET Framework-Typen, 
      das Verwenden von .NET Framework-Typen in C#-Bibliotheken und 
      das Zugreifen auf Win32-APIs.

    
      Weitere Informationen finden Sie unter "Add-Type".


  Ereignisbenachrichtigung
    
      In Windows PowerShell 2.0 wird die Ereignisbenachrichtigung 
      eingeführt. Benutzer können sich für Ereignisse registrieren 
      und diese abonnieren, beispielsweise Windows PowerShell-
      Ereignisse, WMI-Ereignisse oder .NET Framework-Ereignisse. 
      Außerdem können Benutzer synchron und asynchron auf Verwaltungs- 
      und Systemereignisse reagieren und diese überwachen und 
      weiterleiten.


      Entwickler können Anwendungen schreiben, die die Ereignisarchi-
      tektur verwenden, um Benachrichtigungen über Statusänderungen 
      zu empfangen. Benutzer können Skripts schreiben, die 
      verschiedene Ereignisse abonnieren und auf den Inhalt reagieren.
   

      Windows PowerShell stellt Cmdlets bereit, die neue Ereignisse 
      erstellen, Ereignisse und Ereignisabonnements abrufen, 
      Ereignisse registrieren und ihre Registrierung aufheben sowie 
      auf Ereignisse warten und Ereignisse löschen. Weitere 
      Informationen über diese Cmdlets erhalten Sie mit folgendem Befehl:

          get-command *-event

   
  Module
    
      Windows PowerShell-Module ermöglichen das Aufteilen und 
      Organisieren von Windows PowerShell-Skripts in Einheiten, die 
      unabhängig, in sich abgeschlossen und wiederverwendbar sind. 
      Code aus einem Modul wird im eigenen Kontext ausgeführt, sodass 
      Variablen, Funktionen, Aliasen und anderen Ressourcen in der 
      Sitzung keine Elemente hinzugefügt und diese nicht 
      überschrieben werden und keine entsprechenden Konflikte entstehen.

    
      Sie können Module erstellen, verteilen, kombinieren, freigeben und 
      wiederverwenden, um einfache Skripts und komplexe Anwendungen zu 
      erstellen. 


      Windows PowerShell 2.0 enthält Cmdlets zum Hinzufügen, Abrufen 
      und Entfernen von Modulen sowie zum Exportieren von 
      Modulelementen. Weitere Informationen über die Cmdlets, die mit 
      Modulen verknüpft sind, erhalten Sie mit folgendem Befehl:

          get-command *-module* 

 
  Transaktionen
    
      Windows PowerShell 2.0 bietet Unterstützung für Transaktionen. 
      Transaktionen ermöglichen es, eine ganze Reihe von Vorgängen 
      rückgängig zu machen. Transaktionen sind nur für Vorgänge 
      verfügbar, die Transaktionen unterstützen. Sie können in 
      Anwendungen verwendet werden, die Unteilbarkeit, Konsistenz, 
      Isolation und Wiederherstellbarkeit erfordern, beispielsweise 
      Datenbanken und Message Queuing.


      Cmdlets und Anbieter, die Transaktionen unterstützen, verfügen 
      über einen neuen UseTransaction-Parameter. Um einen Vorgang in 
      einer Transaktion zu starten, verwenden Sie das Cmdlet 
      "Start-Transaction." Verwenden Sie den UseTransaction-Parameter 
      des jeweiligen Cmdlets zur Ausführung des Vorgangs, wenn der 
      Befehl Teil einer Transaktion sein soll. 


      Wenn bei einem Befehl in der Transaktion an einem beliebigen 
      Punkt ein Fehler auftritt, verwenden Sie das Cmdlet 
      "Rollback-Transaction", um alle Befehle in der Transaktion 
      rückgängig zu machen.
      Wenn alle Befehle erfolgreich ausgeführt werden, verwenden Sie 
      das Cmdlet "Commit-Transaction", um die Befehlsaktionen 
      dauerhaft zu machen.


      Windows PowerShell 2.0 enthält Cmdlets zum Starten, Verwenden 
      und Zurücksetzen von Transaktionen sowie zum Ausführen 
      entsprechender Commits. Informationen über diese Cmdlets 
      erhalten Sie mit folgendem Befehl:

          get-command *transaction*

     
 Wichtige Änderungen an Windows PowerShell 1.0

     -- Der Wert des Registrierungseintrags "PowerShellVersion" in 
        "HKLM\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine" wurde in 2.0 
        geändert.

     -- Neue Cmdlets und Variablen wurden hinzugefügt. Dadurch kann 
        es zu Konflikten mit Variablen und Funktionen in Profilen und 
        Skripts kommen.

     -- Der -IEQ-Operator führt einen Vergleich ohne Berücksichtigung 
        der Groß-/Kleinschreibung für Zeichen aus.

     -- Das Cmdlet "Get-Command" ruft zusätzlich zu Cmdlets 
        standardmäßig Funktionen ab.

     -- Systemeigene Befehle, die eine Benutzeroberfläche generieren, 
        können nicht über die Pipeline an das Cmdlet "Out-Host" 
        übergeben werden.

     -- Es können Konflikte zwischen den neuen Schlüsselwörtern 
        "Begin", "Process", "End" und "Dynamic Parameter" und 
        ähnlichen Wörtern in Skripts und Funktionen auftreten. Durch 
        Interpretieren dieser Wörter als Schlüsselwörter kann es zu 
        Analysefehlern kommen. 

     -- Die Auflösung von Cmdlet-Namen wurde geändert. In Windows 
        PowerShell 1.0 wurde ein Laufzeitfehler generiert, wenn zwei 
        Windows PowerShell-Snap-Ins Cmdlets mit dem gleichen Namen 
        exportiert haben. Wenn Sie den Namen des Befehls eingeben, 
        wird in Windows PowerShell 2.0 das Cmdlet ausgeführt, das der 
        Sitzung zuletzt hinzugefügt wurde. Um einen Befehl 
        auszuführen, der nicht standardmäßig ausgeführt wird, 
        qualifizieren Sie den Cmdlet-Namen mit dem Namen des 
        ursprünglichen Snap-Ins oder des ursprünglichen Moduls.

     -- Geben Sie den Namen einer Funktion und anschließend '-?' ein, 
        um ggf. das Hilfethema für die Funktion aufzurufen. 

     -- Die Auflösung von Parametern für Microsoft .NET 
        Framework-Methoden wurde geändert.
        In Windows PowerShell 1.0 wurde beim Aufrufen einer 
        überladenen .NET-Methode mit mehr als einer Syntax, die am 
        besten geeignet ist, kein Fehler gemeldet. In Windows 
        PowerShell 2.0 wird die Mehrdeutigkeit als Fehler gemeldet. 

        Außerdem wurde in Windows PowerShell 2.0 der Algorithmus zur 
        Auswahl der am besten geeigneten Methode überarbeitet, um die 
        Anzahl von Mehrdeutigkeiten signifikant zu minimieren.

     -- Wenn Sie eine Auflistung in der Pipeline auflisten und 
        versuchen, die Auflistung in der Pipeline zu ändern, löst 
        Windows PowerShell eine Ausnahme aus.
    
        Beispielsweise könnten die folgenden Befehle in Windows 
        PowerShell 1.0 verwendet werden, in Windows PowerShell 2.0 
        verursachen sie nach dem ersten Pipelinedurchlauf jedoch 
        einen Fehler.

            $h = @{Name="Hallo"; Value="Test"}
            $h.keys | foreach-object {$h.remove($_)}

        Um diesen Fehler zu vermeiden, erstellen Sie einen 
        Unterausdruck für den Enumerator mit den Zeichen "$ ()". Beispiel:

	    $($h.keys) | foreach-object {$h.remove($_)}

 
 Weitere Informationen über Windows PowerShell 2.0 finden Sie 
      auf den folgenden Websites:
 
      -- Windows PowerShell-Website 
         https://go.microsoft.com/fwlink/?LinkID=106031

      -- Windows PowerShell-Teamblog:
         https://go.microsoft.com/fwlink/?LinkId=143696


SIEHE AUCH
    about_Data_Sections
    about_Debuggers
    about_Functions_Advanced
    about_Jobs
    about_Join
    about_PSSessions
    about_Remote
    about_Script_Internationalization
    about_Split
    




Inhaltsverzeichnis