Partager via


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.