about_Transactions

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. Lub transakcja może zostać całkowicie cofnięta ("wycofana"), aby dane, których dotyczy problem, 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 najgorszy scenariusz dla zestawu poleceń nie jest taki, że wszystkie kończą się niepowodzeniem, ale niektóre polecenia kończą się powodzeniem, podczas gdy inne kończą się niepowodzeniem, pozostawiając system w uszkodzonym, fałszywym lub niezinterpretowanym stanie, który jest trudny do naprawienia.

POLECENIA CMDLET TRANSAKCJI

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

  • Start-Transaction: uruchamia nową transakcję.
  • Use-Transaction: dodaje polecenie lub wyrażenie do transakcji. Polecenie musi używać obiektów z obsługą transakcji.
  • Cofnij transakcję: cofa transakcję, aby żadna z danych nie została zmieniona 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

ELEMENTY Z OBSŁUGĄ TRANSAKCJI

Aby wziąć udział w transakcji, zarówno polecenie cmdlet, jak i dostawca muszą obsługiwać transakcje. Ta funkcja jest wbudowana w obiekty, których dotyczy 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 z uruchomionym programem PowerShell.

Inni dostawcy programu PowerShell mogą obsługiwać transakcje. Aby znaleźć dostawców programu PowerShell w sesji obsługującej transakcje, użyj następującego polecenia, aby znaleźć wartość "Transakcje" 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 dostawcy, wpisz:

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, jeśli nie ma aktywnej transakcji, polecenie zakończy się niepowodzeniem.

Aby znaleźć polecenia cmdlet z parametrem UseTransaction, wpisz:

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żyjesz opcji Start-Transaction, aby uruchomić transakcję.

    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 Aktywne, Zatwierdzone i Wycofane.

  • 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ć określonej 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 polecenie Get-Transaction zawsze pobiera 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 odwrotnej kolejności, z której są uruchamiane, dzięki czemu ostatnio uruchomiona transakcja jest zawsze aktywna.

SUBSKRYBENCI I NIEZALEŻNE TRANSAKCJE

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

Gdy transakcja ma wielu subskrybentów, jedno polecenie Cofnij transakcję w dowolnym momencie powoduje wycofanie całej transakcji dla wszystkich subskrybentów. Jednak aby zatwierdzić transakcję, należy wprowadzić polecenie Complete-Transaction 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, aby uzyskać wartość 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ę niezależną od bieżącej transakcji przy użyciu niezależnego parametru polecenia cmdlet Start-Transaction.

Po rozpoczęciu niezależnej transakcji start-transaction tworzy nowy obiekt transakcji, a nowa transakcja staje się aktywną transakcją. 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ą.

ZMIENIANIE DANYCH

Gdy używasz transakcji do zmiany danych, dane, na które ma wpływ transakcja, nie są zmieniane do momentu zatwierdzenia transakcji. Jednak te same dane można zmienić za pomocą poleceń, 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 HKCU: dysk, 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 do uwzględnienia polecenia w aktywnej transakcji.

new-item MyCompany -UseTransaction

Polecenie zwraca obiekt reprezentujący 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 MyCompany 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 do uwzględnienia polecenia w aktywnej transakcji.

new-item MyOtherCompany -UseTransaction

Polecenie zwraca obiekt reprezentujący 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 Cofnij transakcję. Ponieważ zawsze ma to wpływ na aktywną transakcję, nie należy określać transakcji.

Undo-transaction

Wynikiem jest to, że 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: WYŚWIETLANIE PODGLĄDU 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żyć polecenia Get-ChildItem (alias to "dir"), aby wyświetlić podgląd zmian w transakcji.

Następujące polecenie uruchamia transakcję.

start-transaction

Następujące polecenie używa polecenia cmdlet New-ItemProperty, aby dodać wpis 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 został zmieniony.

MyKey
-----
123

Aby uzyskać 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 żadne wpisy nie zostały jeszcze dodane do klucza MyCompany.

Hive: HKEY_CURRENT_USER\Software

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

Aby wyświetlić podgląd efektu zatwierdzania 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 TRANSACTED I NIEZWIĄZANYCH Z TRANSAKCJAMI POLECEŃ

Podczas transakcji można wprowadzać polecenia bez transakcji. Polecenia bez transakcji wpływają natychmiast 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ą polecenia cmdlet New-Item, aby dodać klucze 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, jest skuteczne natychmiast.

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

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

dir m*

Wynik pokazuje, że klucz MyCompany2 jest dodawany do rejestru, ale klucze MyCompany1 i MyCompany3, 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: UŻYWANIE 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ą zwykle 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

Następujące polecenie używa polecenia cmdlet New-Item, aby dodać klucz MyCompany do rejestru. Polecenie używa parametru UseTransaction (alias to "usetx"), aby dołączyć polecenie do transakcji.

New-Item MyCompany -UseTX

Ponieważ klucz MyCompany już istnieje w rejestrze, polecenie kończy się niepowodzeniem, a transakcja zostanie wycofana.

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 parametr SubscriberCount wynosi 0.

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

PRZYKŁAD 6: ZMIANA PREFERENCJI WYCOFYWANIA

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

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: UŻYWANIE POLECENIA CMDLET USE-TRANSACTION

Polecenie cmdlet Use-Transaction umożliwia wykonywanie bezpośrednich skryptów względem obiektów programu Microsoft .NET Framework z obsługą transakcji. Use-Transaction przyjmuje 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 wystąpienie klasy TransactedString i zapisuje je w zmiennej $t.

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

Następujące polecenie używa metody Append obiektu TransactedString, aby dodać tekst do ciągu. Ponieważ polecenie nie jest częścią transakcji, zmiana jest skuteczna 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 funkcji Use-Transaction. Wymagany jest parametr UseTransaction (UseTx).

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

Aby wyświetlić bieżącą zawartość ciągu transakcyjnego w $t, użyj 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 transakcyjnego w $t z poziomu transakcji, osadź 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 TRANSAKCJAMI DLA WIELU SUBSKRYBENTÓW

Po rozpoczęciu transakcji podczas wykonywania innej transakcji 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 uruchomienia transakcji w kluczu HKCU:\Software.

start-transaction

Następujące polecenie używa polecenia Get-Transaction, aby uzyskać aktywną transakcję.

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

Następujące polecenie używa polecenia Start-Transaction, aby uruchomić transakcję. 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 obiektu transakcji jest zwiększana. Wartość wynosi teraz 2.

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

Następne polecenie używa polecenia cmdlet New-ItemProperty, aby dodać wpis rejestru MyKey do klucza MyCompany. Używa parametru UseTransaction do uwzględnienia polecenia w transakcji.

new-itemproperty -path MyCompany -name MyKey -UseTransaction

Klucz MyCompany nie istnieje w rejestrze, ale to polecenie powiedzie się, ponieważ 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 obiektu transakcji wynosi 1, ale wartość Status jest nadal aktywna (nie zatwierdzone).

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 polecenie Complete-Transaction dla każdego polecenia Start-Transaction.

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

Po rozpoczęciu transakcji, gdy inna transakcja jest w toku, można użyć parametru Independent start-Transaction, aby dokonać nowej transakcji niezależnie od oryginalnej transakcji.

Gdy to zrobisz, start-transaction tworzy nowy obiekt transakcji i sprawia, że nowa transakcja jest aktywna transakcja.

Rozpocznij od uruchomienia transakcji w kluczu HKCU:\Software.

start-transaction

Następujące polecenie używa polecenia Get-Transaction, aby uzyskać aktywną transakcję.

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) do uwzględnienia polecenia w aktywnej transakcji.

new-item MyCompany -use

Następujące polecenie uruchamia nową transakcję. Polecenie używa 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ą. Aby uzyskać aktywną transakcję, możesz użyć polecenia Get-Transaction.

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) do 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ż