Share via


Undo-Transaction

Esegue il rollback della transazione attiva.

Sintassi

Undo-Transaction
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Descrizione

Il Undo-Transaction cmdlet esegue il rollback della transazione attiva. Quando si esegue il rollback di una transazione, le modifiche apportate dai comandi nella transazione vengono rimosse e i dati vengono ripristinati nel formato originale.

Se la transazione include più sottoscrittori, un Undo-Transaction comando esegue il rollback dell'intera transazione per tutti i sottoscrittori.

Per impostazione predefinita, il rollback delle transazioni viene eseguito automaticamente se un comando qualsiasi nella transazione genera un errore. Tuttavia, le transazioni possono essere avviate usando una preferenza di rollback diversa ed è possibile usare questo cmdlet per eseguire il rollback della transazione attiva in qualsiasi momento.

Il Undo-Transaction cmdlet è uno dei set di cmdlet che supportano la funzionalità transazioni in Windows PowerShell. Per altre informazioni, vedere about_Transactions.

Esempio

Esempio 1: Eseguire il rollback della transazione corrente

Undo-Transaction

Questo comando esegue il rollback della transazione corrente, attiva e attiva.

Esempio 2: Avviare ed eseguire il rollback di una transazione

Set-Location hkcu:\software
Start-Transaction
New-Item -Path "ContosoCompany" -UseTransaction
Undo-Transaction

In questo esempio viene avviata una transazione e quindi ne viene eseguito il rollback. Di conseguenza, non vengono apportate modifiche al Registro di sistema.

Esempio 3: Eseguire il rollback di una transazione per tutti i sottoscrittori

Set-Location hkcu:\software
Start-Transaction
New-Item -Path "ContosoCompany" -UseTransaction
Get-Transaction

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

Start-Transaction
Get-Transaction

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

Undo-Transaction
Get-Transaction

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

In questo esempio viene illustrato che quando un sottoscrittore esegue il rollback di una transazione, viene eseguito il rollback dell'intera transazione per tutti i sottoscrittori.

Il primo comando modifica il percorso nella chiave del HKCU:\Software Registro di sistema.

Il secondo comando avvia una transazione.

Il terzo comando usa il New-Item cmdlet per creare una nuova chiave del Registro di sistema. Il comando usa il parametro UseTransaction per includere la modifica nella transazione.

Il quarto comando usa il Get-Transaction cmdlet per ottenere la transazione attiva. Si noti che lo stato è Active e il numero di sottoscrittori è 1.

Il quinto comando usa di nuovo il Start-Transaction comando . In genere, l'avvio di una transazione mentre è in corso un'altra transazione si verifica quando uno script utilizzato dalla transazione principale include la propria transazione completa. Questo esempio viene eseguito in modo interattivo in modo da poterlo esaminare in fasi. Quando si esegue un comando mentre è in corso un'altra Start-Transaction transazione, i comandi aggiungono la transazione esistente come nuovo sottoscrittore e il conteggio dei sottoscrittori viene incrementato.

Il sesto comando usa il Get-Transaction cmdlet per ottenere la transazione attiva. Si noti che ora il numero di sottoscrittori è 2.

Il settimo comando usa Undo-Transaction per eseguire il rollback della transazione. Questo comando non restituisce alcun oggetto.

Il comando finale è un Get-Transaction comando che ottiene l'oggetto attivo o, in questo caso, l'ultima transazione attiva. I risultati illustrano che viene eseguito il rollback della transazione e che il numero di sottoscrittori è 0, mostrando che è stato eseguito il rollback della transazione per tutti i sottoscrittori.

Parametri

-Confirm

Richiede conferma prima di eseguire il cmdlet.

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

-WhatIf

Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.

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

Input

None

Non è possibile inviare input tramite pipe a questo cmdlet.

Output

None

Questo cmdlet non restituisce alcun output.

Note

  • Non è possibile eseguire il rollback di una transazione di cui è stato eseguito il commit.

    Non è possibile eseguire il rollback di transazioni diverse da quella attiva. Per eseguire il rollback di una transazione indipendente diversa, occorre prima eseguire il commit o il rollback della transazione attiva.

    Il rollback della transazione termina la transazione. Per usare di nuovo una transazione, è necessario avviarne una nuova.