Partager via


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 retourne un objet clé, les données du Registre ne sont pas encore modifiées.

Une deuxième commande Start-Transaction ajoute un deuxième abonné à la transaction existante. L’applet de commande Get-Transaction 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 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.