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.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.