A transaction allows a set of changes to be grouped together and committed at the same time.
The registry provider supports transactions, as shown in the following code:
PS> Get-PSProvider
Name Capabilities Drives
---- ------------ ------
Registry ShouldProcess, Transactions {HKLM, HKCU}
Alias ShouldProcess {Alias}
Environment ShouldProcess {Env}
FileSystem Filter, ShouldProcess, Credentials {B, C, D}
Function ShouldProcess {Function}
Variable ShouldProcess {Variable}
A transaction may be created as follows:
Start-Transaction $path = 'HKCU:TestTransaction' New-Item $path -ItemType Key -UseTransaction Set-ItemProperty $path -Name 'Name' -Value 'Transaction' -UseTransaction Set-ItemProperty $path -Name 'Length' -Value 20 -UseTransaction
At this point, the transaction may be undone:
Undo-Transaction
Alternatively, the transaction may be committed:
Complete-Transaction
A list of the commands that support transactions may be viewed, although not all of these may be used with the registry provider:
Get-Command -ParameterName UseTransaction