Complete-Transaction
Zatwierdza aktywną transakcję.
Składnia
Complete-Transaction
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Opis
Polecenie Complete-Transaction
cmdlet zatwierdza aktywną transakcję. Po zatwierdzeniu transakcji polecenia w transakcji zostaną sfinalizowane, a dane, na które mają wpływ polecenia, zostaną zmienione.
Jeśli transakcja obejmuje wielu subskrybentów, aby zatwierdzić transakcję, musisz wprowadzić jedno Complete-Transaction
polecenie dla każdego Start-Transaction
polecenia.
Polecenie Complete-Transaction
cmdlet jest jednym z zestawów poleceń cmdlet, które obsługują funkcję transakcji w programie Windows PowerShell.
Aby uzyskać więcej informacji, zobacz about_Transactions.
Przykłady
Przykład 1. Zatwierdzanie transakcji
Set-Location hkcu:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Get-ChildItem m*
Hive: HKEY_CURRENT_USER\software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
Complete-Transaction
Get-ChildItem m*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
0 0 MyCompany {}
W tym przykładzie pokazano, co się stanie, gdy użyjesz Complete-Transaction
polecenia cmdlet do zatwierdzenia transakcji.
Polecenie Start-Transaction
uruchamia transakcję. Polecenie New-Item używa parametru UseTransaction do uwzględnienia polecenia w transakcji.
Pierwsze Get-ChildItem
polecenie pokazuje, że nowy element nie został jeszcze dodany do rejestru.
Polecenie Complete-Transaction
zatwierdza transakcję, co sprawia, że zmiana rejestru jest skuteczna. W rezultacie drugie Get-ChildItem
polecenie pokazuje, że rejestr został zmieniony.
Przykład 2. Zatwierdzanie transakcji zawierającej więcej niż jednego subskrybenta
Set-Location hkcu:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
0 0 MyCompany {}
Start-Transaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 2 Active
New-ItemProperty -Path MyCompany -Name MyKey -Value -UseTransaction
MyKey
-----
123
Complete-Transaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 1 Active
Get-ChildItem m*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
Complete-Transaction
Get-ChildItem m*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
0 1 MyCompany {MyKey}
W tym przykładzie pokazano, jak użyć Complete-Transaction
polecenia do zatwierdzenia transakcji, która ma więcej niż jednego subskrybenta.
Aby zatwierdzić transakcję dla wielu subskrybentów, musisz wprowadzić jedno Complete-Transaction
polecenie dla każdego Start-Transaction
polecenia. Dane są zmieniane tylko po przesłaniu końcowego Complete-Transaction
polecenia.
W celach demonstracyjnych w tym przykładzie przedstawiono serię poleceń wprowadzonych w wierszu polecenia. W praktyce transakcje mogą być uruchamiane w skryptach, a transakcja pomocnicza jest uruchamiana przez funkcję lub skrypt pomocnika, który jest wywoływany przez skrypt główny.
W tym przykładzie Start-Transaction
polecenie uruchamia transakcję. Polecenie New-Item
z parametrem UseTransaction dodaje klucz MyCompany do klucza software. New-Item
Mimo że polecenie cmdlet zwraca obiekt klucza, dane w rejestrze nie są jeszcze zmieniane.
Drugie Start-Transaction
polecenie dodaje drugiego subskrybenta do istniejącej transakcji. Polecenie Get-Transaction
cmdlet potwierdza, że liczba subskrybentów wynosi 2. Polecenie New-ItemProperty z parametrem UseTransaction dodaje wpis rejestru do nowego klucza MyCompany. Ponownie polecenie zwraca wartość, ale rejestr nie jest zmieniany.
Pierwsze Complete-Transaction
polecenie zmniejsza liczbę subskrybentów o 1. Jest to potwierdzane przez Get-Transaction
polecenie . Jednak żadne dane nie są zmieniane, co wynika z Get-ChildItem m*
polecenia .
Drugie Complete-Transaction
polecenie zatwierdza całą transakcję i zmienia dane w rejestrze. Jest to potwierdzane przez drugie Get-ChildItem m*
polecenie, które pokazuje zmiany.
Przykład 3. Wykonywanie transakcji, która nie zmienia żadnych danych
Set-Location hkcu:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Get-ChildItem m*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
Get-ChildItem m* -UseTransaction
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
0 0 MyCompany {}
Complete-Transaction
W tym przykładzie pokazano wartość poleceń Get-* i inne polecenia, które nie zmieniają danych, w transakcji. Get-\*
Gdy polecenie jest używane w transakcji, pobiera obiekty, które są częścią transakcji. Dzięki temu można wyświetlić podgląd zmian w transakcji przed zatwierdzeniu zmian.
W tym przykładzie jest uruchamiana transakcja. Polecenie New-Item z parametrem UseTransaction dodaje nowy klucz do rejestru w ramach transakcji.
Ponieważ nowy klucz rejestru nie jest dodawany do rejestru do momentu Complete-Transaction
uruchomienia polecenia, proste Get-ChildItem
polecenie wyświetla rejestr bez nowego klucza.
Jednak po dodaniu parametru UseTransaction do Get-ChildItem
polecenia polecenie staje się częścią transakcji i pobiera elementy w transakcji, nawet jeśli nie zostały jeszcze dodane do danych.
Parametry
-Confirm
Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-WhatIf
Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
None
Nie można potokować obiektów do tego polecenia cmdlet.
Dane wyjściowe
None
To polecenie cmdlet nie generuje żadnych danych wyjściowych.
Uwagi
Nie można wycofać transakcji, która została zatwierdzona lub zatwierdzić transakcję, która została wycofana.
Nie można wycofać żadnej transakcji innej niż aktywna transakcja. Aby wycofać inną transakcję, musisz najpierw zatwierdzić lub wycofać aktywną transakcję.
Domyślnie, jeśli nie można zadeklarować żadnej części transakcji, na przykład gdy polecenie w transakcji spowoduje błąd, cała transakcja zostanie wycofana.