Complete-Transaction
Valide la transaction active.
Syntaxe
Complete-Transaction
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
L’applet Complete-Transaction
de commande valide une transaction active. Lorsque vous validez une transaction, les commandes de la transaction sont finalisées et les données concernées par les commandes sont modifiées.
Si la transaction inclut plusieurs abonnés, pour valider la transaction, vous devez entrer une Complete-Transaction
commande pour chaque Start-Transaction
commande.
L’applet Complete-Transaction
de commande 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
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 {}
Cet exemple montre ce qui se passe lorsque vous utilisez l’applet Complete-Transaction
de commande pour valider une transaction.
La Start-Transaction
commande démarre la transaction. La commande New-Item utilise le paramètre UseTransaction pour inclure la commande dans la transaction.
La première Get-ChildItem
commande indique que le nouvel élément n’a pas encore été ajouté au Registre.
La Complete-Transaction
commande valide la transaction, ce qui rend la modification du Registre effective. Par conséquent, la deuxième Get-ChildItem
commande indique que le Registre est modifié.
Exemple 2 : Valider une transaction comportant plusieurs abonnés
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}
Cet exemple montre comment utiliser Complete-Transaction
pour valider une transaction qui a plusieurs abonnés.
Pour valider une transaction multi-abonné, vous devez entrer une Complete-Transaction
commande pour chaque Start-Transaction
commande. 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 au niveau de la ligne de commande. Dans la pratique, les transactions sont susceptibles d’être exécutées dans des scripts, la transaction secondaire étant exécutée par un script de fonction ou d’application d’assistance appelé par le script principal.
Dans cet exemple, une Start-Transaction
commande démarre la transaction. Une New-Item
commande avec le paramètre UseTransaction ajoute la clé MyCompany à la clé logicielle. Bien que l’applet New-Item
de commande retourne un objet clé, les données du Registre ne sont pas encore modifiées.
Une deuxième Start-Transaction
commande ajoute un deuxième abonné à la transaction existante. L’applet Get-Transaction
de commande confirme que le nombre d’abonnés est 2. Une commande New-ItemProperty avec le paramètre UseTransaction ajoute une entrée de Registre à la nouvelle clé MyCompany. Là encore, la commande retourne une valeur, mais le Registre n’est pas modifié.
La première Complete-Transaction
commande réduit le nombre d’abonnés de 1. Cela est confirmé par une Get-Transaction
commande. Toutefois, aucune donnée n’est modifiée, comme indiqué par une Get-ChildItem m*
commande.
La deuxième Complete-Transaction
commande valide l’intégralité de la transaction et modifie les données dans le Registre. Cela est confirmé par une deuxième Get-ChildItem m*
commande, qui affiche les modifications.
Exemple 3 : Effectuer une transaction qui ne modifie aucune donnée
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
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 Get-\*
commande 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 de les valider.
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 Complete-Transaction
commande n’est pas exécutée, une commande simple Get-ChildItem
affiche le Registre sans la nouvelle clé.
Toutefois, lorsque vous ajoutez le paramètre UseTransaction à la Get-ChildItem
commande, 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 demande une confirmation 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
Montre ce qui se passe en cas d’exécution de l’applet de commande. 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 rediriger des 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 qui a été validée, ni valider une transaction qui a été restaurée.
Vous ne pouvez pas restaurer une autre transaction que la transaction active. Pour restaurer une autre transaction, vous devez commencer par valider ou restaurer la transaction active.
En cas d’impossibilité de valider une partie d’une transaction (lorsqu’une commande dans la transaction génère une erreur, par exemple), la transaction est par défaut entièrement restaurée.