Udostępnij przez


Informacje o transakcjach

KRÓTKI OPIS

Opisuje sposób zarządzania operacjami transakcji w programie PowerShell.

DŁUGI OPIS

Transakcje są obsługiwane w programie PowerShell rozpoczynającym się w programie PowerShell 2.0. Ta funkcja umożliwia uruchomienie transakcji, wskazanie, które polecenia są częścią transakcji, oraz zatwierdzanie lub wycofywanie transakcji.

INFORMACJE O TRANSAKCJACH

W programie PowerShell transakcja jest zestawem co najmniej jednego polecenia zarządzanego jako jednostka logiczna. Transakcja może zostać ukończona ("zatwierdzona"), która zmienia dane, na które ma wpływ transakcja. Transakcja może też zostać całkowicie cofnięta ("wycofana"), tak aby dane, których dotyczy transakcja, nie zostały zmienione przez transakcję.

Ponieważ polecenia w transakcji są zarządzane jako jednostka, wszystkie polecenia są zatwierdzane lub wszystkie polecenia są cofane.

Transakcje są szeroko stosowane w przetwarzaniu danych, zwłaszcza w operacjach bazy danych i w przypadku transakcji finansowych. Transakcje są najczęściej używane, gdy najgorszym scenariuszem dla zestawu poleceń nie jest to, że wszystkie kończą się niepowodzeniem, ale to, że niektóre polecenia kończą się powodzeniem, a inne nie, pozostawiając system w stanie uszkodzonym, fałszywym lub nieinterpretowalnym, który jest trudny do naprawienia.

POLECENIA CMDLET TRANSAKCJI

Program PowerShell zawiera kilka poleceń cmdlet przeznaczonych do zarządzania transakcjami.

  • Start-Transaction: Rozpoczyna nową transakcję.
  • Use-Transaction: Dodaje polecenie lub wyrażenie do transakcji. Polecenie musi używać obiektów z obsługą transakcji.
  • Cofnij transakcję: Wycofuje transakcję, tak aby żadne dane nie zostały zmienione przez transakcję.
  • Complete-Transaction: zatwierdza transakcję. Dane, na które ma wpływ transakcja, są zmieniane.
  • Get-Transaction: pobiera informacje o aktywnej transakcji.

Aby uzyskać listę poleceń cmdlet transakcji, wpisz:

get-command *transaction

Aby uzyskać szczegółowe informacje o poleceniach cmdlet, wpisz:

get-help use-transaction -detailed

TRANSACTION-ENABLED ELEMENTÓW

Aby wziąć udział w transakcji, zarówno polecenie cmdlet, jak i dostawca muszą obsługiwać transakcje. Ta funkcja jest wbudowana w obiekty, na które ma wpływ transakcja.

Dostawca rejestru programu PowerShell obsługuje transakcje w systemie Windows Vista. Obiekt TransactedString (Microsoft.PowerShell.Commands.Management.TransactedString) współpracuje z dowolnym systemem operacyjnym, w którym jest uruchomiony program PowerShell.

Inni dostawcy programu PowerShell mogą obsługiwać transakcje. Aby znaleźć dostawców programu PowerShell w sesji, którzy obsługują transakcje, użyj następującego polecenia, aby znaleźć wartość "Transactions" we właściwości Capabilities dostawców:

get-psprovider | where {$_.Capabilities -like "transactions"}

Aby uzyskać więcej informacji na temat dostawcy, zobacz Pomoc dla dostawcy. Aby uzyskać pomoc dla dostawcy, należy wpisać:

get-help <provider-name>

Aby na przykład uzyskać pomoc dotyczącą dostawcy rejestru, wpisz:

get-help registry

PARAMETR USETRANSACTION

Polecenia cmdlet, które mogą obsługiwać transakcje, mają parametr UseTransaction. Ten parametr zawiera polecenie w aktywnej transakcji. Możesz użyć pełnej nazwy parametru lub jego aliasu "usetx".

Parametr może być używany tylko wtedy, gdy sesja zawiera aktywną transakcję. Jeśli wprowadzisz polecenie z parametrem UseTransaction, gdy nie ma aktywnej transakcji, polecenie zakończy się niepowodzeniem.

Aby znaleźć polecenia cmdlet z parametrem UseTransaction, należy wpisać:

get-help * -parameter UseTransaction

W programie PowerShell core wszystkie polecenia cmdlet przeznaczone do pracy z dostawcami programu PowerShell obsługują transakcje. W związku z tym można zarządzać transakcjami za pomocą poleceń cmdlet dostawcy.

Aby uzyskać więcej informacji na temat dostawców programu PowerShell, zobacz about_Providers.

OBIEKT TRANSACTION

Transakcje są reprezentowane w programie PowerShell przez obiekt transakcji, System.Management.Automation.Transaction.

Obiekt ma następujące właściwości:

  • RollbackPreference: Zawiera preferencję wycofywania ustawioną dla bieżącej transakcji. Możesz ustawić preferencję wycofywania, gdy używasz Start-Transaction do rozpoczęcia transakcji.

    Preferencja wycofywania określa warunki, w których transakcja jest cofana automatycznie. Prawidłowe wartości to Error, TerminatingError i Never. Wartość domyślna to Błąd.

  • Stan: Zawiera bieżący stan transakcji. Prawidłowe wartości to Active, Committed i RolledBack.

  • SubscriberCount: zawiera liczbę subskrybentów transakcji. Subskrybent jest dodawany do transakcji podczas uruchamiania transakcji, gdy trwa inna transakcja. Liczba subskrybentów jest dekrementowana, gdy subskrybent zatwierdza transakcję.

AKTYWNE TRANSAKCJE

W programie PowerShell tylko jedna transakcja jest aktywna jednocześnie i można zarządzać tylko aktywną transakcją. Wiele transakcji może być w toku w tej samej sesji w tym samym czasie, ale tylko ostatnio uruchomiona transakcja jest aktywna.

W związku z tym nie można określić konkretnej transakcji podczas korzystania z poleceń cmdlet transakcji. Polecenia zawsze mają zastosowanie do aktywnej transakcji.

Jest to najbardziej widoczne w zachowaniu polecenia cmdlet Get-Transaction. Po wprowadzeniu polecenia Get-Transaction zawsze otrzymuje Get-Transaction tylko jeden obiekt transakcji. Ten obiekt jest obiektem reprezentującym aktywną transakcję.

Aby zarządzać inną transakcją, musisz najpierw zakończyć aktywną transakcję, zatwierdzając ją lub cofając ją. Gdy to zrobisz, poprzednia transakcja stanie się aktywna automatycznie. Transakcje stają się aktywne w kolejności odwrotnej do kolejności, w jakiej zostały rozpoczęte, tak że ostatnio rozpoczęta transakcja jest zawsze aktywna.

ABONENCI I NIEZALEŻNE TRANSAKCJE

Jeśli uruchomisz transakcję, gdy inna transakcja jest w toku, domyślnie program PowerShell nie uruchamia nowej transakcji. Zamiast tego dodaje "subskrybenta" do bieżącej transakcji.

Gdy transakcja ma wielu subskrybentów, jedno polecenie Undo-Transaction w dowolnym momencie wycofuje całą transakcję dla wszystkich subskrybentów. Aby jednak zatwierdzić transakcję, należy wprowadzić Complete-Transaction polecenie dla każdego subskrybenta.

Aby znaleźć liczbę subskrybentów transakcji, sprawdź właściwość SubscriberCount obiektu transakcji. Na przykład następujące polecenie używa polecenia cmdlet Get-Transaction w celu pobrania wartości właściwości SubscriberCount aktywnej transakcji:

(Get-Transaction).SubscriberCount

Dodawanie subskrybenta jest zachowaniem domyślnym, ponieważ większość transakcji, które są uruchamiane, podczas gdy inna transakcja jest w toku, są powiązane z oryginalną transakcją. W typowym modelu skrypt zawierający transakcję wywołuje skrypt pomocnika, który zawiera własną transakcję. Ponieważ transakcje są powiązane, powinny zostać wycofane lub zatwierdzone jako jednostka.

Można jednak uruchomić transakcję, która jest niezależna od bieżącej transakcji, przy użyciu parametru Independent polecenia cmdlet Start-Transaction.

Po rozpoczęciu transakcji niezależnej Start-Transaction tworzy nowy obiekt transakcji, a nowa transakcja staje się transakcją aktywną. Niezależna transakcja może zostać zatwierdzona lub wycofana bez wpływu na oryginalną transakcję.

Po zakończeniu niezależnej transakcji (zatwierdzonej lub wycofanej) oryginalna transakcja ponownie stanie się aktywną transakcją.

ZMIANA DANYCH

W przypadku zmiany danych za pomocą transakcji dane, na które ma wpływ transakcja, nie są zmieniane, dopóki transakcja nie zostanie zatwierdzona. Jednak te same dane mogą być zmieniane przez polecenia, które nie są częścią transakcji.

Pamiętaj o tym, gdy używasz transakcji do zarządzania danymi udostępnionymi. Zazwyczaj bazy danych mają mechanizmy blokujące dane podczas pracy nad nimi, uniemożliwiając innym użytkownikom i innym poleceniem, skryptom i funkcjom zmianę.

Blokada jest jednak funkcją bazy danych. Nie jest to związane z transakcjami. Jeśli pracujesz w systemie plików z obsługą transakcji lub innym magazynie danych, dane można zmienić, gdy transakcja jest w toku.

PRZYKŁADY

W przykładach w tej sekcji użyto dostawcy rejestru programu PowerShell i założono, że znasz go. Aby uzyskać informacje o dostawcy rejestru, wpisz "get-help registry".

PRZYKŁAD 1: ZATWIERDZANIE TRANSAKCJI

Aby utworzyć transakcję, użyj polecenia cmdlet Start-Transaction. Następujące polecenie uruchamia transakcję z ustawieniami domyślnymi.

start-transaction

Aby dołączyć polecenia do transakcji, użyj parametru UseTransaction polecenia cmdlet. Domyślnie polecenia nie są uwzględniane w transakcji,

Na przykład następujące polecenie, które ustawia bieżącą lokalizację w kluczu oprogramowania dysku HKCU:, nie jest uwzględniane w transakcji.

cd hkcu:\Software

Następujące polecenie, które tworzy klucz MyCompany, używa parametru UseTransaction polecenia cmdlet New-Item w celu uwzględnienia tego polecenia w aktywnej transakcji.

new-item MyCompany -UseTransaction

Polecenie zwraca obiekt, który reprezentuje nowy klucz, ale ponieważ polecenie jest częścią transakcji, rejestr nie został jeszcze zmieniony.

Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
  0   0 MyCompany                      {}

Aby zatwierdzić transakcję, użyj polecenia cmdlet Complete-Transaction. Ponieważ zawsze ma to wpływ na aktywną transakcję, nie można określić transakcji.

complete-transaction

W związku z tym klucz MojaFirma jest dodawany do rejestru.

dir m*
Hive: HKEY_CURRENT_USER\software

SKC  VC Name                           Property
---  -- ----                           --------
 83   1 Microsoft                      {(default)}
  0   0 MyCompany                      {}

PRZYKŁAD 2: WYCOFYWANIE TRANSAKCJI

Aby utworzyć transakcję, użyj polecenia cmdlet Start-Transaction. Następujące polecenie uruchamia transakcję z ustawieniami domyślnymi.

start-transaction

Następujące polecenie, które tworzy klucz MyOtherCompany, używa parametru UseTransaction polecenia cmdlet New-Item w celu uwzględnienia tego polecenia w aktywnej transakcji.

new-item MyOtherCompany -UseTransaction

Polecenie zwraca obiekt, który reprezentuje nowy klucz, ale ponieważ polecenie jest częścią transakcji, rejestr nie został jeszcze zmieniony.

Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
  0   0 MyOtherCompany                 {}

Aby wycofać transakcję, użyj polecenia cmdlet Undo-Transaction. Ponieważ zawsze ma to wpływ na aktywną transakcję, nie należy określać transakcji.

Undo-transaction

W rezultacie klucz MyOtherCompany nie jest dodawany do rejestru.

dir m*
Hive: HKEY_CURRENT_USER\software

SKC  VC Name                           Property
---  -- ----                           --------
 83   1 Microsoft                      {(default)}
  0   0 MyCompany                      {}

PRZYKŁAD 3: PODGLĄD TRANSAKCJI

Zazwyczaj polecenia używane w danych zmiany transakcji. Jednak polecenia, które pobierają dane, są również przydatne w transakcji, ponieważ pobierają dane wewnątrz transakcji. Zapewnia to podgląd zmian, które spowodują zatwierdzenie transakcji.

W poniższym przykładzie pokazano, jak używać polecenia Get-ChildItem (alias to "dir") w celu wyświetlenia podglądu zmian w transakcji.

Następujące polecenie uruchamia transakcję.

start-transaction

Poniższe polecenie używa polecenia cmdlet New-ItemProperty w celu dodania wpisu rejestru MyKey do klucza MyCompany. Polecenie używa parametru UseTransaction do uwzględnienia polecenia w transakcji.

new-itemproperty -path MyCompany -Name MyKey -value 123 -UseTransaction

Polecenie zwraca obiekt reprezentujący nowy wpis rejestru, ale wpis rejestru nie jest zmieniany.

MyKey
-----
123

Aby pobrać elementy, które znajdują się obecnie w rejestrze, użyj polecenia Get-ChildItem ("dir") bez parametru UseTransaction. Następujące polecenie pobiera elementy rozpoczynające się od "M".

dir m*

Wynik pokazuje, że do klucza MojaFirma nie zostały jeszcze dodane żadne wpisy.

Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 83   1 Microsoft                      {(default)}
  0   0 MyCompany                      {}

Aby wyświetlić podgląd efektu zatwierdzenia transakcji, wprowadź polecenie Get-ChildItem ("dir") z parametrem UseTransaction. To polecenie ma widok danych z poziomu transakcji.

dir m* -useTransaction

Wynik pokazuje, że jeśli transakcja zostanie zatwierdzona, wpis MyKey zostanie dodany do klucza MyCompany.

Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 83   1 Microsoft                      {(default)}
  0   1 MyCompany                      {MyKey}

PRZYKŁAD 4: ŁĄCZENIE POLECEŃ TRANSAKCYJNYCH I NON-TRANSACTED

Podczas transakcji można wprowadzać polecenia bez transakcji. Polecenia, które nie są objęte transakcją, mają natychmiastowy wpływ na dane, ale nie mają wpływu na transakcję. Następujące polecenie uruchamia transakcję w kluczu rejestru HKCU:\Software.

start-transaction

Następne trzy polecenia używają New-Item cmdlet w celu dodania kluczy do rejestru. Pierwsze i trzecie polecenia używają parametru UseTransaction do uwzględnienia poleceń w transakcji. Drugie polecenie pomija parametr . Ponieważ drugie polecenie nie jest uwzględnione w transakcji, obowiązuje natychmiast.

new-item MyCompany1 -UseTransaction
new-item MyCompany2
new-item MyCompany3 -UseTransaction

Aby wyświetlić bieżący stan rejestru, należy użyć polecenia Get-ChildItem ("dir") bez parametru UseTransaction. To polecenie pobiera elementy rozpoczynające się od litery "M".

dir m*

Wynik pokazuje, że klucz MojaFirma2 jest dodawany do rejestru, ale klucze MojaFirma1 i MojaFirma3, które są częścią transakcji, nie są dodawane.

Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 83   1 Microsoft                      {(default)}
  0    0 MyCompany2                     {}

Następujące polecenie zatwierdza transakcję.

complete-transaction

Teraz klucze dodane w ramach transakcji są wyświetlane w rejestrze.

dir m*
Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
83   1 Microsoft                      {(default)}
0    0 MyCompany1                     {}
0    0 MyCompany2                     {}
0    0 MyCompany3                     {}

PRZYKŁAD 5: KORZYSTANIE Z AUTOMATYCZNEGO WYCOFYWANIA

Gdy polecenie w transakcji generuje błąd dowolnego rodzaju, transakcja zostanie automatycznie wycofana.

To domyślne zachowanie jest przeznaczone dla skryptów, które uruchamiają transakcje. Skrypty są zazwyczaj dobrze przetestowane i zawierają logikę obsługi błędów, więc błędy nie są oczekiwane i powinny zakończyć transakcję.

Pierwsze polecenie uruchamia transakcję w kluczu rejestru HKCU:\Software.

start-transaction

Poniższe polecenie używa polecenia cmdlet New-Item w celu dodania klucza MyCompany do rejestru. W poleceniu użyto parametru UseTransaction (alias to "usetx") w celu uwzględnienia polecenia w transakcji.

New-Item MyCompany -UseTX

Ponieważ klucz MojaFirma już istnieje w rejestrze, polecenie kończy się niepowodzeniem, a transakcja jest wycofywana.

New-Item : A key at this path already exists
At line:1 char:9
+ new-item <<<<  MyCompany -usetx

Polecenie Get-Transaction potwierdza, że transakcja została wycofana i że wartość SubscriberCount wynosi 0.

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                0                 RolledBack

PRZYKŁAD 6: ZMIANA PREFERENCJI WYCOFYWANIA ZMIAN

Jeśli chcesz, aby transakcja była bardziej odporna na błędy, możesz użyć parametru RollbackPreference Start-Transaction, aby zmienić preferencje.

Następujące polecenie uruchamia transakcję z preferencją wycofywania "Nigdy".

start-transaction -rollbackpreference Never

W takim przypadku, gdy polecenie zakończy się niepowodzeniem, transakcja nie zostanie automatycznie wycofana.

New-Item MyCompany -UseTX
New-Item : A key at this path already exists
At line:1 char:9
+ new-item <<<<  MyCompany -usetx

Ponieważ transakcja jest nadal aktywna, możesz ponownie przesłać polecenie w ramach transakcji.

New-Item MyOtherCompany -UseTX

PRZYKŁAD 7: KORZYSTANIE Z POLECENIA CMDLET USE-TRANSACTION

Polecenie cmdlet Use-Transaction umożliwia wykonywanie bezpośrednich skryptów względem obiektów Microsoft .NET Framework z obsługą transakcji. Use-Transaction pobiera blok skryptu, który może zawierać tylko polecenia i wyrażenia korzystające z obiektów .NET Framework z obsługą transakcji, takich jak wystąpienia klasy Microsoft.PowerShell.Commands.Management.TransactedString.

Następujące polecenie uruchamia transakcję.

start-transaction

Następujące polecenie New-Object tworzy instancję klasy TransactedString i zapisuje ją w zmiennej $t.

$t = New-Object Microsoft.PowerShell.Commands.Management.TransactedString

Poniższe polecenie używa metody Append obiektu TransactedString w celu dodania tekstu do ciągu. Ponieważ polecenie nie jest częścią transakcji, zmiana wchodzi w życie natychmiast.

$t.append("Windows")

Następujące polecenie używa tej samej metody Append, aby dodać tekst, ale dodaje tekst jako część transakcji. Polecenie jest ujęte w nawiasy klamrowe i jest ustawiane jako wartość parametru ScriptBlock Use-Transaction. Parametr UseTransaction (UseTx) jest wymagany.

use-transaction {$t.append(" PowerShell")} -usetx

Aby wyświetlić bieżącą zawartość ciągu transakcji w $t, należy użyć metody ToString obiektu TransactedString.

$t.tostring()

Dane wyjściowe pokazują, że obowiązują tylko zmiany niezwiązane z transakcjami.

Windows

Aby wyświetlić bieżącą zawartość ciągu transakcji w $t z poziomu transakcji, należy osadzić wyrażenie w poleceniu Use-Transaction.

use-transaction {$s.tostring()} -usetx

Dane wyjściowe zawierają widok transakcji.

PowerShell

Następujące polecenie zatwierdza transakcję.

complete-transaction

Aby wyświetlić końcowy ciąg:

$t.tostring()
PowerShell

PRZYKŁAD 8: ZARZĄDZANIE MULTI-SUBSCRIBER TRANSAKCJAMI

Po rozpoczęciu transakcji, gdy inna transakcja jest w toku, program PowerShell domyślnie nie tworzy drugiej transakcji. Zamiast tego dodaje subskrybenta do bieżącej transakcji.

W tym przykładzie pokazano, jak wyświetlać transakcję dla wielu subskrybentów i zarządzać nią.

Rozpocznij od rozpoczęcia transakcji w kluczu HKCU:\Software.

start-transaction

Poniższe polecenie używa polecenia Get-Transaction w celu pobrania aktywnej transakcji.

get-transaction

Wynik przedstawia obiekt reprezentujący aktywną transakcję.

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                1                 Active

Następujące polecenie dodaje klucz MyCompany do rejestru. Polecenie używa parametru UseTransaction do uwzględnienia polecenia w transakcji.

new-item MyCompany -UseTransaction

Poniższe polecenie używa polecenia Start-Transaction w celu uruchomienia transakcji. Mimo że to polecenie jest wpisywane w wierszu polecenia, ten scenariusz jest bardziej prawdopodobny po uruchomieniu skryptu zawierającego transakcję.

start-transaction

Polecenie Get-Transaction pokazuje, że liczba subskrybentów w obiekcie transakcji jest zwiększana. Wartość wynosi teraz 2.

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                2                 Active

Następne polecenie używa New-ItemProperty cmdlet w celu dodania wpisu rejestru MyKey do klucza MyCompany. Używa parametru UseTransaction do uwzględnienia polecenia w transakcji.

new-itemproperty -path MyCompany -name MyKey -UseTransaction

Klucz MojaFirma nie istnieje w rejestrze, ale to polecenie powiedzie się, ponieważ te dwa polecenia są częścią tej samej transakcji.

Następujące polecenie zatwierdza transakcję. Jeśli wycofa transakcję, transakcja zostanie wycofana dla wszystkich subskrybentów.

complete-transaction

Polecenie Get-Transaction pokazuje, że liczba subskrybentów w obiekcie transakcji wynosi 1, ale wartość Status jest nadal aktywna (nie zatwierdzona).

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                1                 Active

Aby zakończyć zatwierdzanie transakcji, wprowadź drugie polecenie Complete- Transaction. Aby zatwierdzić transakcję dla wielu subskrybentów, należy wprowadzić jedno Complete-Transaction polecenie dla każdego Start-Transaction polecenia.

complete-transaction

Inne polecenie Get-Transaction pokazuje, że transakcja została zatwierdzona.

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                0                 Committed

PRZYKŁAD 9: ZARZĄDZANIE NIEZALEŻNYMI TRANSAKCJAMI

Gdy rozpoczynasz transakcję, gdy inna transakcja jest w toku, możesz użyć parametru Independent Start-Transaction, aby uniezależnić nową transakcję od pierwotnej transakcji.

Gdy to zrobisz, Start-Transaction utworzy nowy obiekt transakcji i sprawi, że nowa transakcja stanie się aktywną transakcją.

Rozpocznij od rozpoczęcia transakcji w kluczu HKCU:\Software.

start-transaction

Poniższe polecenie używa polecenia Get-Transaction w celu pobrania aktywnej transakcji.

get-transaction

Wynik przedstawia obiekt reprezentujący aktywną transakcję.

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                1                 Active

Następujące polecenie dodaje klucz rejestru MyCompany w ramach transakcji. Używa parametru UseTransaction (UseTx) w celu uwzględnienia polecenia w aktywnej transakcji.

new-item MyCompany -use

Następujące polecenie uruchamia nową transakcję. W poleceniu użyto parametru Independent, aby wskazać, że ta transakcja nie jest subskrybentem aktywnej transakcji.

start-transaction -independent

Podczas tworzenia niezależnej transakcji nowa (ostatnio utworzona) transakcja staje się aktywną transakcją. Możesz użyć polecenia Get-Transaction, aby uzyskać aktywną transakcję.

get-transaction

Należy pamiętać, że liczba subskrybentów transakcji wynosi 1, co oznacza, że nie ma innych subskrybentów i że transakcja jest nowa.

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                1                 Active

Aby można było zarządzać oryginalną transakcją, należy zakończyć nową transakcję (zatwierdzoną lub wycofaną).

Następujące polecenie dodaje klucz MyOtherCompany do rejestru. Używa parametru UseTransaction (UseTx) w celu uwzględnienia polecenia w aktywnej transakcji.

new-item MyOtherCompany -usetx

Teraz wycofaj transakcję. Gdyby była jedna transakcja z dwoma subskrybentami, wycofanie transakcji spowoduje wycofanie całej transakcji dla wszystkich subskrybentów.

Jednak ponieważ te transakcje są niezależne, wycofywanie najnowszych transakcji anuluje zmiany rejestru i powoduje, że oryginalna transakcja jest aktywna transakcja.

undo-transaction

Polecenie Get-Transaction potwierdza, że oryginalna transakcja jest nadal aktywna w sesji.

get-transaction
RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                1                 Active

Następujące polecenie zatwierdza aktywną transakcję.

complete-transaction

Polecenie Get-ChildItem pokazuje, że rejestr został zmieniony.

dir m*
Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 83   1 Microsoft                      {(default)}
  0   0 MyCompany                      {}

ZOBACZ TEŻ

Transakcja początkowa

Get-Transaction (Transakcja pobierania)

Transakcja zakończona

Cofnij transakcję

Transakcja użytkowania

Get-PSProvider

Get-ChildItem

o_Dostawcach