Start-Transaction

Elindít egy tranzakciót.

Syntax

Start-Transaction
     [-Timeout <Int32>]
     [-Independent]
     [-RollbackPreference <RollbackSeverity>]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]

Description

A Start-Transaction parancsmag elindít egy tranzakciót, amely egy egységként felügyelt parancsok sorozata. A tranzakciók elvégezhetők vagy le is köthetők. Azt is megteheti, hogy teljesen visszavonja vagy visszaállítja, így a tranzakció által módosított adatok visszaállíthatók az eredeti állapotába. Mivel a tranzakció parancsai egységként vannak kezelve, az összes parancs véglegesítve van, vagy az összes parancs vissza lesz állítva.

Alapértelmezés szerint, ha a tranzakció bármelyik parancsa hibát okoz, a rendszer automatikusan visszaállítja a tranzakciókat. Ezt a viselkedést a RollbackPreference paraméter használatával módosíthatja.

A tranzakciókban használt parancsmagokat úgy kell megtervezni, hogy támogassák a tranzakciókat. A tranzakciókat támogató parancsmagok UseTransaction paraméterrel rendelkeznek. Egy szolgáltató tranzakcióinak végrehajtásához a szolgáltatónak támogatnia kell a tranzakciókat. A Windows Vista és a Windows operációs rendszer újabb verzióinak Windows PowerShell beállításjegyzék-szolgáltatója támogatja a tranzakciókat. A Microsoft.PowerShell.Commands.Management.TransactedString osztálysal kifejezéseket is felvehet a tranzakciókba a Windows rendszer bármely olyan verziójában, amely támogatja a Windows PowerShell. Más Windows PowerShell szolgáltatók is támogathatják a tranzakciókat.

Egyszerre csak egy tranzakció lehet aktív. Ha egy tranzakció folyamatban lévő új, független tranzakciót indít el, az új tranzakció aktív tranzakcióvá válik, és az eredeti tranzakció módosítása előtt véglegesítenie vagy vissza kell adnia az új tranzakciót.

Start-TransactionA parancsmag a Windows PowerShell tranzakciós funkcióját támogató parancsmagok egyike. További információ: about_Transactions.

Példák

1. példa: Tranzakció indítása és visszaállítása

Set-Location hkcu:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
New-ItemProperty "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
Undo-Transaction

Ezek a parancsok elindítják, majd visszaállítják a tranzakciót. Mivel a tranzakció vissza lett állítva, a beállításjegyzékben nem történik módosítás.

2. példa: Tranzakció indítása és befejezése

Set-Location hkcu:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
New-ItemProperty "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
Complete-Transaction

Ezek a parancsok elindítanak, majd végrehajtanak egy tranzakciót. A beállításjegyzékben nem történik módosítás, amíg a Complete-Transaction parancsot nem használja.

3. példa: Különböző visszaállítási beállítások használata

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

Ez a példa a RollbackPreference paraméter értékének módosításának hatását mutatja be.

Az első parancskészletben Start-Transaction nem használja a RollbackPreference függvényt. Ennek eredményeképpen a rendszer az alapértelmezett értéket (Error) használja. Ha hiba történik egy tranzakciós parancsban, azaz a megadott elérési út nem létezik, a rendszer automatikusan visszaállítja a tranzakciót.

A második parancskészletben Start-Transaction a RollbackPreference függvényt Használja Soha értékkel. Ennek eredményeképpen, ha hiba történik egy tranzakcióparancsban, a tranzakció továbbra is aktív, és sikeresen befejezhető.

Mivel a legtöbb tranzakciót hiba nélkül kell végrehajtani, a RollbackPreference alapértelmezett értéke általában az előnyben részesített érték.

4. példa: Használja ezt a parancsmagot, amíg egy tranzakció folyamatban van

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

Ez a példa bemutatja a használat Start-Transaction hatását, amíg egy tranzakció folyamatban van. Ez a hatás hasonló a folyamatban lévő tranzakcióhoz való csatlakozáshoz.

Bár ez egy egyszerűsített parancs, ez a forgatókönyv gyakran előfordul, amikor a tranzakció egy teljes tranzakciót tartalmazó szkript futtatását foglalja magában.

Az első Start-Transaction parancs elindítja a tranzakciót. Az első New-Item parancs a tranzakció része.

A második Start-Transaction parancs új előfizetőt ad hozzá a tranzakcióhoz. A Get-Transaction parancs most egy tranzakciót ad vissza, amelynek előfizetői száma 2. A második New-Item parancs ugyanannak a tranzakciónak a része.

A beállításjegyzékben nem történik módosítás, amíg a teljes tranzakció be nem fejeződik. A tranzakció befejezéséhez két Complete-Transaction parancsot kell megadnia, egyet minden előfizetőnek. Ha bármikor visszaállítaná a tranzakciót, az összes tranzakció vissza lesz állítva mindkét előfizető számára.

5. példa: Független tranzakció indítása folyamatban

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}

Ez a példa bemutatja, hogyan indíthat el egy tranzakciót az Independent paraméterrel Start-Transaction , amíg egy másik tranzakció folyamatban van. Ebben az esetben az új tranzakció az eredeti tranzakció befolyásolása nélkül lesz visszaállítva.

Bár a tranzakciók logikailag függetlenek egymástól, mivel egyszerre csak egy tranzakció lehet aktív, az eredeti tranzakció folytatása előtt vissza kell kapcsolnia vagy véglegesítenie kell a legújabb tranzakciót.

Az első parancskészlet elindít egy tranzakciót. A New-Item parancs az első tranzakció része.

A második parancskészletben a Start-Transaction parancs az Independent paramétert használja. Az Get-Transaction alábbi parancs megjeleníti az aktív tranzakció tranzakcióobjektumát, amely a legújabb. Az előfizetők száma 1, ami azt mutatja, hogy a tranzakciók nem kapcsolódnak egymáshoz.

Amikor egy parancs használatával visszaállítja az aktív tranzakciót Undo-Transaction , az eredeti tranzakció ismét aktívvá válik.

Az New-ItemProperty eredeti tranzakció részét képező parancs hiba nélkül befejeződik, és az eredeti tranzakció a Complete-Transaction paranccsal hajtható végre. Ennek eredményeképpen a beállításjegyzék módosul.

6. példa: Tranzakció részét nem képező parancsok futtatása

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                     {}

Ez a példa azt mutatja be, hogy a tranzakció közben elküldött parancsok belefoglalhatók a tranzakcióba, vagy nem vehetők fel. Csak a UseTransaction paramétert használó parancsok részei a tranzakciónak.

Az első és a harmadik New-Item parancs a UseTransaction paramétert használja. Ezek a parancsok a tranzakció részét képezik. Mivel a második New-Item parancs nem használja a UseTransaction paramétert , nem része a tranzakciónak.

Az első Get-ChildItem parancs megjeleníti a hatást. A második New-Item parancs azonnal befejeződik, de az első és a harmadik New-Item parancs nem lesz érvényes a tranzakció véglegesítéséig.

A Complete-Transaction parancs véglegesíti a tranzakciót. Ennek eredményeképpen a második Get-ChildItem parancs azt mutatja, hogy az összes új elem hozzá lesz adva a beállításjegyzékhez.

7. példa: Olyan tranzakció visszaállítása, amely nem fejeződik be egy megadott időpontban

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

Ez a parancs az Időtúllépés paraméterrel Start-Transaction indít el egy tranzakciót, amelyet két percen belül végre kell hajtani. Ha a tranzakció nem fejeződik be az időkorlát lejártakor, a rendszer automatikusan visszaállítja.

Ha az időkorlát lejár, nem kap értesítést, de a tranzakciós objektum Állapot tulajdonsága Visszaállítás értékre van állítva, és a UseTransaction paramétert használó parancsok sikertelenek.

Paraméterek

-Confirm

Jóváhagyást kér a parancsmag futtatása előtt.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Independent

Azt jelzi, hogy ez a parancsmag olyan tranzakciót indít el, amely független a folyamatban lévő tranzakcióktól. Ha egy másik tranzakció folyamatban van, Start-Transaction alapértelmezés szerint egy új előfizetőt ad hozzá a folyamatban lévő tranzakcióhoz. Ez a paraméter csak akkor van hatással, ha egy tranzakció már folyamatban van a munkamenetben.

Alapértelmezés szerint, ha Start-Transaction egy tranzakció folyamatban van, a rendszer újra felhasználja a meglévő tranzakcióobjektumot, és növeli az előfizetők számát. Ez a hatás hasonlít az eredeti tranzakcióhoz való csatlakozáshoz. Egy Undo-Transaction parancs visszaállítja a teljes tranzakciót. A tranzakció befejezéséhez minden előfizetőnek meg kell adnia egy Complete-Transaction parancsot. Mivel az egyidejűleg folyamatban lévő tranzakciók többsége kapcsolatban áll egymással, az alapértelmezett érték elegendő a legtöbb használathoz.

Ha megadja az Independent paramétert, ez a parancsmag létrehoz egy új tranzakciót, amely az eredeti tranzakció befolyásolása nélkül befejezhető vagy visszavonható. Mivel azonban egyszerre csak egy tranzakció lehet aktív, az eredeti tranzakció folytatása előtt be kell fejeznie vagy vissza kell vetnie az új tranzakciót.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-RollbackPreference

Megadja azokat a feltételeket, amelyek mellett a rendszer automatikusan visszaállít egy tranzakciót. A paraméter elfogadható értékei a következők:

  • Error A rendszer automatikusan visszaállítja a tranzakciót, ha leállási vagy megszakítás nélküli hiba történik.
  • TerminatingError A rendszer automatikusan visszaállítja a tranzakciót, ha leállási hiba történik.
  • Never A tranzakció soha nem lesz automatikusan visszaállítva.

Az alapértelmezett érték Error.

Type:RollbackSeverity
Accepted values:Error, TerminatingError, Never
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Timeout

Meghatározza, hogy a tranzakció legfeljebb percekben legyen aktív. Ha az időkorlát lejár, a rendszer automatikusan visszaállítja a tranzakciót.

Alapértelmezés szerint nincs időtúllépés a parancssorban elindított tranzakcióknál. Amikor egy szkript elindítja a tranzakciókat, az alapértelmezett időtúllépési idő 30 perc.

Type:Int32
Aliases:TimeoutMins
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Bemutatja, mi történne a parancsmag futtatásakor. A parancsmag nem fut.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Bevitelek

None

Ehhez a parancsmaghoz nem lehet bemenetet átirányítani.

Kimenetek

None

Ez a parancsmag nem hoz létre kimenetet.