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