Complete-Transaction
Valide la transaction active.
Syntaxe
Complete-Transaction
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
L’applet de commande Complete-Transaction valide une transaction active. Lorsque vous validez une transaction, les commandes de la transaction sont finalisées et les données affectées par les commandes sont modifiées.
Si la transaction inclut plusieurs abonnés, pour valider la transaction, vous devez entrer une commande Complete-Transaction pour chaque commande Start-Transaction.
La cmdlet Complete-Transaction est l’un des ensembles d’applets de commande qui prennent en charge la fonctionnalité de transactions dans Windows PowerShell. Pour plus d’informations, consultez about_Transactions.
Exemples
Exemple 1 : Valider une transaction
PS C:\> 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 {}
Cet exemple montre ce qui se passe lorsque vous utilisez l’applet de commande Complete-Transaction pour valider une transaction.
La commande Start-Transaction démarre la transaction. La commande New-Item utilise le paramètre UseTransaction pour inclure la commande dans la transaction.
La première commande dir (Get-ChildItem) indique que le nouvel élément n’a pas encore été ajouté au Registre.
La commande Complete-Transaction valide la transaction, ce qui rend la modification du Registre effective. Par conséquent, la deuxième commande dir indique que le registre est modifié.
Exemple 2 : Valider une transaction comportant plusieurs abonnés
PS C:\> 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}
Cet exemple montre comment utiliser transaction complète pour valider une transaction comportant plusieurs abonnés.
Pour valider une transaction multi-abonné, vous devez entrer une commande Terminer la transaction pour chaque commande Start-Transaction. Les données sont modifiées uniquement lorsque la commande finale Complete-Transaction est envoyée.
À des fins de démonstration, cet exemple montre une série de commandes entrées sur la ligne de commande. Dans la pratique, les transactions sont susceptibles d’être exécutées dans des scripts, avec la transaction secondaire exécutée par une fonction ou un script d’assistance appelé par le script principal.
Dans cet exemple, une commande Start-Transaction démarre la transaction.
Une commande New-Item avec le paramètre UseTransaction ajoute la clé MyCompany à la clé logicielle.
Bien que l’applet de commande New-Item
Une deuxième commande Start-Transaction ajoute un deuxième abonné à la transaction existante.
L’applet de commande Get-Transaction
La première commande Complete-Transaction réduit le nombre d’abonnés de 1. Cela est confirmé par une commande Get-Transaction. Toutefois, aucune donnée n’est modifiée, comme indiqué par une commande dir m* (Get-ChildItem).
La deuxième commande Complete-Transaction valide l’intégralité de la transaction et modifie les données dans le Registre. Cette opération est confirmée par une deuxième commande dir m*, qui affiche les modifications.
Exemple 3 : Effectuer une transaction qui ne modifie aucune donnée
PS C:\> 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
Cet exemple montre la valeur de l’utilisation de commandes Get-* et d’autres commandes qui ne modifient pas les données, dans une transaction. Lorsqu’une commande Get-* est utilisée dans une transaction, elle obtient les objets qui font partie de la transaction. Cela vous permet d’afficher un aperçu des modifications apportées à la transaction avant la validation des modifications.
Dans cet exemple, une transaction est démarrée. Une commande New-Item avec le paramètre UseTransaction ajoute une nouvelle clé au Registre dans le cadre de la transaction.
Étant donné que la nouvelle clé de Registre n’est pas ajoutée au Registre tant que la commande Complete-Transaction n’est pas exécutée, une commande dir simple (Get-ChildItem) affiche le Registre sans la nouvelle clé.
Toutefois, lorsque vous ajoutez le paramètre UseTransaction à la commande dir, la commande fait partie de la transaction et obtient les éléments de la transaction même s’ils ne sont pas encore ajoutés aux données.
Paramètres
-Confirm
Vous invite à confirmer avant d’exécuter l’applet de commande.
Type: | SwitchParameter |
Alias: | cf |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-WhatIf
Affiche ce qui se passerait si l’applet de commande s’exécute. L’applet de commande n’est pas exécutée.
Type: | SwitchParameter |
Alias: | wi |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
Entrées
None
Vous ne pouvez pas diriger les objets vers cette applet de commande.
Sorties
None
Cette applet de commande ne génère aucune sortie.
Notes
Vous ne pouvez pas restaurer une transaction validée ou valider une transaction qui a été restaurée.
Vous ne pouvez pas restaurer une transaction autre que la transaction active. Pour restaurer une autre transaction, vous devez d’abord valider ou restaurer la transaction active.
Par défaut, si une partie d’une transaction ne peut pas être validée, par exemple lorsqu’une commande dans la transaction génère une erreur, l’intégralité de la transaction est restaurée.