Windows PowerShell: Abrufen von Transactional

PowerShell kann jetzt Transaktionsvorgänge unterstützen, aber es gibt eine Hierarchie, wie es funktioniert.

Don Jones

Die Stromversorgung ist in Zahlen. Eine der neuen Funktionen in Windows PowerShell v2 ist die Unterstützung für Transaktionsvorgänge. Eine Transaktion ist im Allgemeinen zwei oder mehr diskrete Operationen, die erfolgreich durchgeführt werden oder fehlschlagen zusammen als Gruppe müssen.

Genommen Sie an, Sie schreiben einen Batch von Befehlen, die mehrere Registrierungsschlüssel ändern. Eine Änderung kann aufgrund fehlender Berechtigungen oder einige andere bei Ausfällen fehlschlagen. In diesem Fall möchten Sie die Änderungen zu speichern. Sie möchten nur Batch für die Änderungen auf, wenn Sie alle erfolgreich abgeschlossen haben. Ist genau das, was die Shell Transaktionen bereitstellen können.

Was müssen Sie benötigen

Neben Windows PowerShell v2 sind nur die Buchungen auf Windows Vista, Windows Server 2008 und späteren Versionen von Windows zur Verfügung. Obwohl Windows PowerShell v2 auf die älteren Betriebssysteme Windows XP und Windows Server 2003 ausgeführt wird, wird die Shell-Transaktionsunterstützung in diesen Versionen nicht erweitert.

Der an ein gemeinsames Muster wird Windows PowerShell-Entwicklung: Neuere Versionen der Shell auf ältere Versionen des Betriebssystems ausführen können, aber bestimmte Features möglicherweise nur zur Verfügung, wenn Sie die Shell auf eine neuere Version von Windows ausführen.

Die Shell unterstützt Transaktionen über seine PSDrive-Anbieter. Ein PSDrive anpasst, eine Form der Speicherung – z. B. der Registrierung oder im Dateisystem – wie eine standardmäßige Dateisystem. Der PSDrive-Anbieter muss insbesondere Transaktionen unterstützen. In der Shell v2 unterstützt nur der Registrierungsanbieter Transaktionen außerhalb des Feldes.

Die Shell ermöglicht anderen Cmdlets zur Unterstützung von Transaktionen, und diese Buchungen –UseTransaction Parameter enthält. Die Shell enthält im Wesentlichen das Framework für eine Transaktion. Anschließend müssen die spezifischen Cmdlets oder PSDrive-Anbieter tatsächlich die Funktionen erforderlich, die Transaktionen verwenden implementieren.

Starten Sie eine Transaktion aus

Sie können eine Transaktion beginnen, indem einfach Start-Transaktion . Wenn Sie Don Parameter enthält und Don Transaktion bereits gestartet ist, wird es in eine neue gestartet. Wenn Sie das Cmdlet, Ausführen während eine Transaktion bereits ausgeführt wird, sind Sie einfach beitreten zu die vorhandene Transaktion und nicht neu gestartet.

Wenn Start-Transaktion –independent ausführen, wird eine neue Transaktion unabhängige gestartet und verfügbar. Sie können mehrere Transaktionen gleichzeitig starten, jedoch nur eine gleichzeitig aktiv sein kann. Dadurch kann eine Hierarchie von Transaktionen:

  • Transaktion 1 (Start Transaction)
  • Transaktion 2 (Start-Transaktion –independent)
  • Transaktion 3 (Start-Transaktion –independent)

Wenn Transaction 3 aktiv ist, wird jeder unterstützten Befehl führen Sie darin ein Teil dieser Transaktion. Wenn Transaction 3 zu beenden, wird entweder durch Rollback es sichern oder ihn weiterleiten Transaktion 2 wieder aktiv. Obwohl nur eine Transaktion gleichzeitig aktiv sein kann, sind Sie nicht getestet. Genommen Sie an, d. h., Sie 3 Transaktion abzuschließen, aber Abbruch der Transaktion 2. Alles, was als Teil der Transaktion 3 abgeschlossen bleibt.

Sie können immer ausführen Get-Transaktion , um festzustellen, welche Transaktionen zurzeit aktiv sind. Eine Transaktion wird standardmäßig automatisch drehen Back (mehr dazu weiter unten) bei Auftreten eines für ein Cmdlet in der Transaktion Fehlers; Sie können alternative Rollback-Einstellungen unter Verwendung von Start-Transaktion Parameter angeben.

Verwenden eine Transaktion aus

Wenn Sie eine Transaktion beginnen, müssen Sie explizit Befehle mithilfe des Parameters –UseTransaction anfügen. Selbst wenn ein Cmdlet Transaktionen unterstützt, wird er nicht automatisch verwendet. Geben Sie den Parameter für den Vorgang in der Transaktion enthalten werden Reihenfolge wie folgt:

Cd hkcu:\software

Mkdir test

Start-transaction

Del test –usetransaction

Dir

Die Verzeichnisliste wird den Registrierungsschlüssel "Test" enthalten. Obwohl der Schlüssel gelöscht wurde, wurde die Löschung Teil einer Transaktion, die noch nicht übernommen wurden. Wenn Sie Dir –usetransaction , sehen Sie die Verzeichnisliste, wie es innerhalb der Transaktion vorhanden ist. Der Testschlüssel werden nicht aufgelistet.

Schließen einer Transaktion und Transaktions-Tipps

Schließen Sie eine Transaktion in einer von zwei Methoden:

  • Rückgängig-Transaktion führt alle Befehle, die Rollback waren Bestandteil der Transaktion
  • Abgeschlossen-Transaktion wird permanent alle Befehle machen, die Teil der Transaktion

Cmdlets Verwenden-Transaktion können Sie einen beliebigen Befehl als Teil einer Transaktion ausführen. Sie können jedoch nur Befehle enthalten, die die Transaktion-fähige Microsoft .NET Framework-Objekte nutzen. Sie können nicht nur pop-es alle alten Befehle und funktioniert. Führen Sie für Weitere Informationen Hilfe About_transactions .

Die Möglichkeit, die Transaktionen in der Registrierung führen mag zurzeit wenig hilfreich sein. Zugrunde liegenden Unterstützung für transaktionale Dateisystemvorgänge bereits existiert, auch der Datei System PSDrive-Anbieter noch unterstützt wird nicht. Microsoft scheint in Richtung ausführenden mehrere .NET Framework-Objekte gestützt werden – also, was Windows PowerShell erstellt wird – transaktional. In Zukunft können vielleicht Sie auch Active Directory-Operationen transact.

Die gute Nachricht ist, dass die Shell bereits unterschiedliche Transaktionen unterstützt. Mit anderen Worten: Wenn das Dateisystem Transaktionen unterstützt (und doubtless, es wird ein Tag) ist, eine einzelne Transaktion konnte mischen Vorgänge für Dateien und Registrierung, tatsächlich sehr nützliches Tool vornehmen.

 

Don Jones

Don Jones ist ein Gründer von Concentrated Technology und Antworten Fragen zu Windows PowerShell und andere Technologien am ConcentratedTech.com. Außerdem ist er Autor für Nexus.Realtimepublishers.com, wodurch viele seiner Bücher verfügbar als kostenloser elektronischer editions.hrough seiner Website sind.

Verwandter Inhalt