Esegue il commit della transazione attiva.

Sintassi

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

Descrizione

Con il cmdlet Complete-Transaction viene eseguito commit della transazione attiva. Quando si esegue il commit di una transazione, i comandi nella transazione sono completati e i dati interessati dai comandi vengono modificati.

Se la transazione include più sottoscrittori, per eseguire il commit della transazione, è necessario immettere un comando Complete-Transaction per ogni comando Start-Transaction.

Il cmdlet Complete-Transaction fa parte di un set di cmdlet che supportano la funzionalità delle transazioni in Windows PowerShell. Per ulteriori informazioni, vedere about_Transactions.

Parametri

-Confirm

Chiede una conferma prima di eseguire il comando.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-WhatIf

Descrive ciò che accadrebbe se si eseguisse il comando senza eseguirlo realmente.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

Nessuno

Non è possibile reindirizzare oggetti a Complete-Transaction.

Output

Nessuno

Questo cmdlet non restituisce alcun oggetto.

Note

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

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

Per impostazione predefinita, se il commit di qualsiasi parte di una transazione non può essere eseguito, ad esempio quando un comando nella transazione presenta un errore, viene eseguito il rollback dell'intera transazione.

Esempio 1

C:\PS>cd hkcu:\software

PS HKCU:\software> start-transaction

PS HKCU:\software> new-item MyCompany -UseTransaction
PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\software

SKC  VC Name                           Property
---  -- ----                           --------
 82   1 Microsoft                      {(default)}

PS HKCU:\software> complete-transaction
PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\Software

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

Descrizione
-----------
In questo esempio viene illustrato l'effetto dell'utilizzo del cmdlet Complete-Transaction per il commit di una transazione.

Con il primo comando Start-Transaction viene avviata la transazione. Nel comando New-Item viene utilizzato il parametro UseTransaction per includere il comando nella transazione.

Il primo comando "dir (Get-ChildItem)" mostra che il nuovo elemento non è ancora stato aggiunto al Registro di sistema.

Con il comando Complete-Transaction viene eseguito il commit la transazione che rende valida la modifica di Registro di sistema. Di conseguenza, il secondo comando "dir" mostra che il Registro di sistema è stato modificato.






Esempio 2

C:\PS>cd hkcu:\software

PS HKCU:\software> start-transaction
PS HKCU:\software> new-item MyCompany -UseTransaction

   Hive: HKEY_CURRENT_USER\Software

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

PS HKCU:\software> start-transaction
PS HKCU:\Software> Get-Transaction

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

PS HKCU:\software> new-itemproperty -path MyCompany -name MyKey -value -UseTransaction

MyKey
-----
123

PS HKCU:\software> complete-transaction
PS HKCU:\software> get-transaction

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

PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 82   1 Microsoft                      {(default)}

PS HKCU:\software> complete-transaction
PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\Software

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

Descrizione
-----------
In questo esempio viene illustrato come utilizzare Complete-Transaction per eseguire il commit di una transazione con più sottoscrittori. 

Per eseguire il commit di una con più sottoscrittori, è necessario immettere un comando Complete-Transaction per ogni comando Start-Transaction. I dati vengono modificati solo quando viene inviato il comando Complete-Transaction finale. 

In questo esempio viene illustrata, ai fini dimostrativi, una serie di comandi immessi nella riga di comando. Nella pratica, le transazioni vengono probabilmente eseguite in script, con la transazione secondaria eseguita da uno script di funzione o di supporto chiamato dallo script principale.

In questo esempio, un comando Start-Transaction avvia la transazione. Con comando New-Item con il parametro UseTransaction viene aggiunta la chiave MyCompany a alla chiave Software. Sebbene il comando New-Item restituisce un oggetto chiave, i dati nel Registro di sistema non vengono ancora modificati.

Con un secondo comando Start-Transaction viene aggiunto un secondo sottoscrittore alla transazione esistente. Con il comando Get-Transaction viene confermato che il conteggio dei sottoscrittori è 2. Con un comando New-ItemProperty con il parametro UseTransaction viene aggiunta una voce del Registro di sistema alla nuova chiave MyCompany. Nuovamente, il comando restituisce un valore ma il Registro di sistema non viene modificato.

Con il primo comando Complete-Transaction viene ridotto di 1 il conteggio dei sottoscrittori. Questo è confermato da un comando Get-Transaction. Tuttavia, nessun dato viene modificato, come evidenziato da un comando "dir m*" (Get-ChildItem).

Con il secondo comando Complete-Transaction viene eseguito il commit dell'intera transazione e vengono modificati i dati nel Registro di sistema. Tale risultato è confermato da un secondo comando "dir m*" che mostra i cambiamenti.






Esempio 3

C:\PS>cd hkcu:\software

PS HKCU:\software> start-transaction

PS HKCU:\software> new-item MyCompany -UseTransaction

PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 82   1 Microsoft                      {(default)}


PS HKCU:\software> dir m* -UseTransaction

   Hive: HKEY_CURRENT_USER\Software

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

PS HKCU:\software> complete-transaction

Descrizione
-----------
In questo esempio viene illustrato il valore di utilizzo di comandi Get-* e di altri comandi che non modificano i dati in una transazione. Quando in una transazione viene utilizzato un comando Get-*, vengono ottenuti gli oggetti che fanno parte della transazione. Questo consente di visualizzare in anteprima le modifiche della transazione prima che venga eseguito il commit di tali modifiche.

In questo esempio, viene avviata una transazione. Con un comando New-Item con il parametro UseTransaction viene aggiunta una nuova chiave al Registro di sistema come parte della transazione.

Poiché la nuova chiave del Registro di sistema non è aggiunta al Registro di sistema finché non viene eseguito il comando Complete-Transaction, un semplice comando "dir" (Get-ChildItem) mostra il Registro di sistema senza la nuova chiave. 

Tuttavia, quando si aggiunge il parametro UseTransaction al comando "dir", il comando diventa parte della transazione e ottiene gli elementi nella transazione, anche se non sono ancora aggiunti ai dati.






Vedere anche




Argomenti della Guida