Start-Transaction
Hiermee wordt een transactie gestart.
Syntaxis
Start-Transaction
[-Timeout <Int32>]
[-Independent]
[-RollbackPreference <RollbackSeverity>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
De Start-Transaction
cmdlet start een transactie, een reeks opdrachten die worden beheerd als een eenheid. Een transactie kan worden voltooid of doorgevoerd. Het kan ook volledig ongedaan worden gemaakt of teruggedraaid, zodat alle gegevens die door de transactie zijn gewijzigd, worden teruggezet naar de oorspronkelijke staat.
Omdat de opdrachten in een transactie worden beheerd als een eenheid, worden alle opdrachten doorgevoerd of worden alle opdrachten teruggedraaid.
Als een opdracht in de transactie standaard een fout genereert, worden transacties automatisch teruggedraaid. U kunt de parameter RollbackPreference gebruiken om dit gedrag te wijzigen.
De cmdlets die in een transactie worden gebruikt, moeten zijn ontworpen om transacties te ondersteunen. Cmdlets die transacties ondersteunen, hebben een parameter UseTransaction. Voor het uitvoeren van transacties in een provider moet de provider transacties ondersteunen. De Windows PowerShell-registerprovider in Windows Vista en latere versies van het Windows-besturingssysteem ondersteunt transacties. U kunt ook de klasse Microsoft.PowerShell.Commands.Management.TransactedString gebruiken om expressies op te nemen in transacties op elke versie van het Windows-systeem die Ondersteuning biedt voor Windows PowerShell. Andere Windows PowerShell-providers kunnen ook transacties ondersteunen.
Er kan slechts één transactie tegelijk actief zijn. Als u een nieuwe, onafhankelijke transactie start terwijl een transactie wordt uitgevoerd, wordt de nieuwe transactie de actieve transactie en moet u de nieuwe transactie doorvoeren of terugdraaien voordat u wijzigingen aanbrengt in de oorspronkelijke transactie.
Start-Transaction
cmdlet is een van een set cmdlets die ondersteuning bieden voor de transactiefunctie in Windows PowerShell. Zie about_Transactionsvoor meer informatie.
Voorbeelden
Voorbeeld 1: Een transactie starten en terugdraaien
Set-Location hkcu:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
New-ItemProperty "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
Undo-Transaction
Met deze opdrachten wordt een transactie gestart en vervolgens teruggedraaid. Omdat de transactie wordt teruggedraaid, worden er geen wijzigingen aangebracht in het register.
Voorbeeld 2: Een transactie starten en voltooien
Set-Location hkcu:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
New-ItemProperty "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
Complete-Transaction
Met deze opdrachten wordt een transactie gestart en vervolgens voltooid. Er worden geen wijzigingen aangebracht in het register totdat de opdracht Complete-Transaction
wordt gebruikt.
Voorbeeld 3: Verschillende voorkeuren voor terugdraaien gebruiken
Set-Location HKCU:\software
Start-Transaction
New-Item -Path "NoPath" -Name "ContosoCompany" -UseTransaction
New-Item -Path . -Name "ContosoCompany" -UseTransaction
Start-Transaction -RollbackPreference never
New-Item -Path "NoPath" -Name "ContosoCompany" -UseTransaction
New-Item -Path . -Name "ContosoCompany" -UseTransaction
# Start-Transaction (-rollbackpreference error)
Start-Transaction
New-Item -Path "NoPath" -Name "ContosoCompany" -UseTransaction
New-Item : The registry key at the specified path does not exist.
At line:1 char:9
+ new-item <<<< -Path NoPath -Name ContosoCompany -UseTransaction
New-Item -Path . -Name "Contoso" -UseTransaction
New-Item : Cannot use transaction. The transaction has been rolled back or has timed out.
At line:1 char:9
+ New-Item <<<< -Path . -Name ContosoCompany -UseTransaction
# Start-Transaction (-rollbackpreference never)
Start-Transaction -RollbackPreference never
New-Item -Path "NoPath" -Name "ContosoCompany" -UseTransaction
New-Item : The registry key at the specified path does not exist.
At line:1 char:9
+ New-Item <<<< -Path NoPath -Name "ContosoCompany" -UseTransaction
New-Item -Path . -Name "ContosoCompany" -UseTransaction
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
0 0 ContosoCompany {}
Complete-Transaction
# Succeeds
In dit voorbeeld ziet u het effect van het wijzigen van de parameterwaarde RollbackPreference.
In de eerste set opdrachten gebruikt Start-Transaction
RollbackPreferenceniet. Als gevolg hiervan wordt de standaardwaarde (Fout) gebruikt. Wanneer er een fout optreedt in een transactieopdracht, dat wil gezegd, bestaat het opgegeven pad niet, wordt de transactie automatisch teruggedraaid.
In de tweede set opdrachten gebruikt Start-Transaction
RollbackPreference met de waarde Never. Als er een fout optreedt in een transactieopdracht, is de transactie nog steeds actief en kan de transactie worden voltooid.
Omdat de meeste transacties zonder fouten moeten worden uitgevoerd, heeft de standaardwaarde van RollbackPreference doorgaans de voorkeur.
Voorbeeld 4: Gebruik deze cmdlet terwijl er een transactie wordt uitgevoerd
Set-Location HKCU:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
Start-Transaction
Get-Transaction
New-Item "ContosoCompany2" -UseTransaction
Complete-Transaction
Complete-Transaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 2 Active
In dit voorbeeld ziet u het effect van het gebruik van Start-Transaction
terwijl er een transactie wordt uitgevoerd.
Het effect is vergelijkbaar met het samenvoegen van de transactie die wordt uitgevoerd.
Hoewel dit een vereenvoudigde opdracht is, treedt dit scenario vaak op wanneer de transactie een script uitvoert dat een volledige transactie bevat.
De eerste Start-Transaction
opdracht start de transactie. De eerste New-Item
opdracht maakt deel uit van de transactie.
Met de tweede Start-Transaction
opdracht wordt een nieuwe abonnee aan de transactie toegevoegd. De opdracht Get-Transaction
retourneert nu een transactie met het aantal abonnees van 2. De tweede New-Item
opdracht maakt deel uit van dezelfde transactie.
Er worden geen wijzigingen aangebracht in het register totdat de hele transactie is voltooid. Als u de transactie wilt voltooien, moet u twee Complete-Transaction
opdrachten invoeren, één voor elke abonnee. Als u de transactie op enig moment terugdraait, wordt alle transactie teruggedraaid voor beide abonnees.
Voorbeeld 5: Een onafhankelijke transactie starten terwijl er een wordt uitgevoerd
Set-Location HKCU:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
Start-Transaction -Independent
Get-Transaction
Undo-Transaction
New-ItemProperty -Path "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
Complete-Transaction
Get-ChildItem contoso*
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 1 Active
Undo-Transaction
New-ItemProperty -Path "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
MyKey
-----
123
Complete-Transaction
Get-ChildItem contoso*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
0 1 MyCompany {MyKey}
In dit voorbeeld ziet u het effect van het gebruik van de parameter Independent van Start-Transaction
om een transactie te starten terwijl er een andere transactie wordt uitgevoerd.
In dit geval wordt de nieuwe transactie teruggedraaid zonder dat dit van invloed is op de oorspronkelijke transactie.
Hoewel de transacties logisch onafhankelijk zijn, omdat slechts één transactie tegelijk actief kan zijn, moet u de nieuwste transactie terugdraaien of doorvoeren voordat u de oorspronkelijke transactie hervat.
De eerste set opdrachten start een transactie.
De opdracht New-Item
maakt deel uit van de eerste transactie.
In de tweede set opdrachten gebruikt de Start-Transaction
opdracht de parameter Independent.
De Get-Transaction
opdracht die volgt toont het transactieobject voor de actieve transactie, de nieuwste.
Het aantal abonnees is gelijk aan 1, dat aangeeft dat de transacties niet zijn gerelateerd.
Wanneer de actieve transactie wordt teruggedraaid met behulp van een Undo-Transaction
opdracht, wordt de oorspronkelijke transactie opnieuw actief.
De New-ItemProperty
opdracht, die deel uitmaakt van de oorspronkelijke transactie, eindigt zonder fouten en de oorspronkelijke transactie kan worden voltooid met behulp van de opdracht Complete-Transaction
.
Als gevolg hiervan wordt het register gewijzigd.
Voorbeeld 6: Opdrachten uitvoeren die geen deel uitmaken van een transactie
Set-Location hkcu:\software
Start-Transaction
New-Item "ContosoCompany1" -UseTransaction
New-Item "ContosoCompany2"
New-Item "ContosoCompany3" -UseTransaction
Get-ChildItem contoso*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
0 0 ContosoCompany2 {}
Complete-Transaction
Get-ChildItem contoso*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
0 0 ContosoCompany1 {}
0 0 ContosoCompany2 {}
0 0 ContosoCompany3 {}
In dit voorbeeld ziet u dat opdrachten die worden verzonden terwijl een transactie wordt uitgevoerd, kunnen worden opgenomen in de transactie of niet. Alleen opdrachten die gebruikmaken van de parameter UseTransaction maken deel uit van de transactie.
De eerste en derde New-Item
opdrachten gebruiken de parameter UseTransaction. Deze opdrachten maken deel uit van de transactie. Omdat de tweede New-Item
opdracht niet de parameter UseTransaction gebruikt, maakt deze geen deel uit van de transactie.
In de eerste Get-ChildItem opdracht wordt het effect weergegeven. De tweede New-Item
opdracht is onmiddellijk voltooid, maar de eerste en derde New-Item
opdrachten zijn pas van kracht als de transactie is doorgevoerd.
De Complete-Transaction
opdracht voert de transactie door. Als gevolg hiervan geeft de tweede Get-ChildItem opdracht aan dat alle nieuwe items worden toegevoegd aan het register.
Voorbeeld 7: Een transactie terugdraaien die niet binnen een opgegeven tijd eindigt
Start-Transaction -Timeout 2
# Wait two minutes...
Get-Transaction
New-Item HKCU:\Software\ContosoCompany -UseTransaction
Start-Transaction -Timeout 2
# Wait two minutes...
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- -----------
Error 1 RolledBack
New-Item HKCU:\Software\ContosoCompany -UseTransaction
New-Item : Cannot use transaction. The transaction has been rolled back or has timed out.
At line:1 char:9
+ new-item <<<< MyCompany -UseTransaction
Met deze opdracht wordt de parameter time-out van van Start-Transaction
gebruikt om een transactie te starten die binnen twee minuten moet worden voltooid. Als de transactie niet is voltooid wanneer de time-out verloopt, wordt deze automatisch teruggedraaid.
Wanneer de time-out verloopt, ontvangt u geen melding, maar de eigenschap Status van het transactieobject is ingesteld op RolledBack en opdrachten die gebruikmaken van de parameter UseTransaction.
Parameters
-Confirm
U wordt gevraagd om bevestiging voordat u de cmdlet uitvoert.
Type: | SwitchParameter |
Aliassen: | cf |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Independent
Geeft aan dat deze cmdlet een transactie start die onafhankelijk is van transacties die worden uitgevoerd.
Als u Start-Transaction
gebruikt terwijl er een andere transactie wordt uitgevoerd, wordt er standaard een nieuwe abonnee toegevoegd aan de transactie die wordt uitgevoerd. Deze parameter heeft alleen effect wanneer er al een transactie wordt uitgevoerd in de sessie.
Als u Start-Transaction
gebruikt terwijl een transactie wordt uitgevoerd, wordt het bestaande transactieobject standaard opnieuw gebruikt en wordt het aantal abonnees verhoogd. Het effect is vergelijkbaar met het samenvoegen van de oorspronkelijke transactie. Met een Undo-Transaction
opdracht wordt de hele transactie teruggedraaid.
Als u de transactie wilt voltooien, moet u een Complete-Transaction
opdracht invoeren voor elke abonnee.
Omdat de meeste transacties die tegelijkertijd worden uitgevoerd, gerelateerd zijn, is de standaardwaarde voldoende voor de meeste toepassingen.
Als u de parameter Independent opgeeft, maakt deze cmdlet een nieuwe transactie die kan worden voltooid of ongedaan kan worden gemaakt zonder dat dit van invloed is op de oorspronkelijke transactie. Omdat er echter slechts één transactie tegelijk actief kan zijn, moet u de nieuwe transactie voltooien of terugdraaien voordat u de oorspronkelijke transactie hervat.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-RollbackPreference
Hiermee geeft u de voorwaarden op waaronder een transactie automatisch wordt teruggedraaid. De acceptabele waarden voor deze parameter zijn:
-
Error
De transactie wordt automatisch teruggedraaid als er een afsluit- of niet-afsluitfout optreedt. -
TerminatingError
De transactie wordt automatisch teruggedraaid als er een afsluitfout optreedt. -
Never
De transactie wordt nooit automatisch teruggedraaid.
De standaardwaarde is Error
.
Type: | RollbackSeverity |
Geaccepteerde waarden: | Error, TerminatingError, Never |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Timeout
Hiermee geeft u de maximale tijd, in minuten, op dat de transactie actief is. Wanneer de time-out verloopt, wordt de transactie automatisch teruggedraaid.
Er is standaard geen time-out voor transacties die op de opdrachtregel worden gestart. Wanneer transacties worden gestart door een script, is de standaardtime-out 30 minuten.
Type: | Int32 |
Aliassen: | TimeoutMins |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-WhatIf
Toont wat er zou gebeuren als de cmdlet wordt uitgevoerd. De cmdlet wordt niet uitgevoerd.
Type: | SwitchParameter |
Aliassen: | wi |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
Invoerwaarden
None
U kunt invoer voor deze cmdlet niet doorsluisen.
Uitvoerwaarden
None
Met deze cmdlet wordt geen uitvoer gegenereerd.