Megosztás a következőn keresztül:


Start-Transaction

Elindít egy tranzakciót.

Syntax

Default (Alapértelmezett)

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 kezelt parancsok sorozata. A tranzakciók elvégezhetők vagy véglegesíthetik. Azt is megteheti, hogy teljesen visszavonja vagy visszaállítja a tranzakció által módosított adatokat az eredeti állapotába. Mivel a tranzakció parancsai egységként vannak kezelve, az összes parancs véglegesítése 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. A RollbackPreference paraméter használatával módosíthatja ezt a viselkedést.

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óiban a Windows PowerShell-beállításjegyzék-szolgáltató támogatja a tranzakciókat. A Microsoft.PowerShell.Commands.Management.TransactedString osztályt is használhatja a windowsos powershellt támogató Windows-rendszer bármely verziójának tranzakcióiban. 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ó lesz az aktív tranzakció, és az eredeti tranzakció módosítása előtt véglegesítenie vagy vissza kell állítania az új tranzakciót.

A Start-Transaction 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

PS C:\> cd hkcu:\software
PS HKCU:\software> Start-Transaction
PS HKCU:\software> New-Item "ContosoCompany" -UseTransaction
PS HKCU:\software> New-ItemProperty "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
PS HKCU:\software> Undo-Transaction

Ezek a parancsok elindulnak, majd visszaállítanak egy tranzakciót. Mivel a tranzakció vissza lett állítva, a rendszer nem módosítja a beállításjegyzéket.

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

PS C:\> cd hkcu:\software
PS HKCU:\software> Start-Transaction
PS HKCU:\software> New-Item "ContosoCompany" -UseTransaction
PS HKCU:\software> New-ItemProperty "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
PS HKCU:\software> Complete-Transaction

Ezek a parancsok elindítják, majd végrehajtják a tranzakciót. A beállításjegyzék nem változik a Complete-Transaction parancs használatáig.

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

PS C:\> cd HKCU:\software
PS HKCU:\software> Start-Transaction
PS HKCU:\software> New-Item -Path "NoPath" -Name "ContosoCompany" -UseTransaction
PS HKCU:\software> New-Item -Path . -Name "ContosoCompany" -UseTransaction
PS HKCU:\software> Start-Transaction -RollbackPreference never
PS HKCU:\software> New-Item -Path "NoPath" -Name "ContosoCompany" -UseTransaction
PS HKCU:\software> New-Item -Path . -Name "ContosoCompany" -UseTransaction

# Start-Transaction (-rollbackpreference error)

PS HKCU:\software> Start-Transaction
PS HKCU:\software> 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

PS HKCU:\software> 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)

PS HKCU:\software> Start-Transaction -RollbackPreference never
PS HKCU:\software> 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
PS HKCU:\software> New-Item -Path . -Name "ContosoCompany" -UseTransaction

Hive: HKEY_CURRENT_USER\Software
SKC  VC Name                           Property
---  -- ----                           --------
0   0 ContosoCompany                 {}
PS HKCU:\Software> 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 a Start-Transaction nem használja a RollbackPreference parancsot. Ennek eredményeként a rendszer az alapértelmezett értéket (Hiba) használja. Ha hiba történik egy tranzakcióparancsban, azaz a megadott elérési út nem létezik, a rendszer automatikusan visszaállítja a tranzakciót.

A parancsok második csoportjában a Start-Transaction a RollbackPreference értéket 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, általában a rollbackPreference alapértelmezett értéke van előnyben.

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

PS C:\> cd HKCU:\software
PS HKCU:\software> Start-Transaction
PS HKCU:\software> New-Item "ContosoCompany" -UseTransaction
PS HKCU:\software> Start-Transaction
PS HKCU:\software> Get-Transaction
PS HKCU:\software> New-Item "ContosoCompany2" -UseTransaction
PS HKCU:\software> Complete-Transaction
PS HKCU:\software> Complete-Transaction
PS HKCU:\Software> Get-Transaction
RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                2                 Active

Ez a példa a Start-Transaction használatának hatását mutatja be egy tranzakció közben. Ez a hatás nagyon hasonlít 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 mostantól 2-es előfizetői számmal rendelkező tranzakciót ad vissza. A második New-Item parancs ugyanannak a tranzakciónak a része.

A teljes tranzakció befejezéséig nem történik módosítás a beállításjegyzékben. A tranzakció befejezéséhez két Complete-Transaction parancsot kell megadnia, egyet minden előfizető számára. 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

PS C:\> cd HKCU:\software
PS HKCU:\software> Start-Transaction
PS HKCU:\software> New-Item "ContosoCompany" -UseTransaction
PS HKCU:\software> Start-Transaction -Independent
PS HKCU:\software> Get-Transaction
PS HKCU:\software> Undo-Transaction
PS HKCU:\software> New-ItemProperty -Path "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
PS HKCU:\software> Complete-Transaction
PS HKCU:\software> dir contoso*
PS HKCU:\Software> Get-Transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                1                 Active
PS HKCU:\software> Undo-Transaction
PS HKCU:\software> New-ItemProperty -Path "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
MyKey
-----
123
PS HKCU:\software> Complete-Transaction
PS HKCU:\software> dir contoso*
Hive: HKEY_CURRENT_USER\Software
SKC  VC Name                           Property
---  -- ----                           --------
0   1 MyCompany                      {MyKey}

Ez a példa bemutatja, hogy a Start-Transactionfüggetlen paraméterével milyen hatást indít el egy tranzakció, miközben egy másik tranzakció van folyamatban. 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, mivel egyszerre csak egy tranzakció lehet aktív, vissza kell állítania vagy véglegesítenie kell a legújabb tranzakciót, mielőtt újra meg kellene dolgoznia az eredeti tranzakción.

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 alábbi Get-Transaction parancs az aktív tranzakció tranzakciós objektumát jeleníti meg, amely a legújabb. Az előfizetők száma egyenlő 1-sel, amely azt mutatja, hogy a tranzakciók nem kapcsolódnak egymáshoz.

Ha az aktív tranzakciót egy Undo-Transaction paranccsal visszaállítja, az eredeti tranzakció ismét aktívvá válik.

Az eredeti tranzakció részét képező New-ItemProperty 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 megváltozik.

6. példa: Olyan parancsok futtatása, amelyek nem részei a tranzakciónak

PS C:\> cd hkcu:\software
PS HKCU:\software> Start-Transaction
PS HKCU:\software> New-Item "ContosoCompany1" -UseTransaction
PS HKCU:\software> New-Item "ContosoCompany2"
PS HKCU:\software> New-Item "ContosoCompany3" -UseTransaction
PS HKCU:\software> dir contoso*
PS HKCU:\software> Complete-Transaction
PS HKCU:\software> dir contoso*
PS HKCU:\Software> dir contoso*

Hive: HKEY_CURRENT_USER\Software
SKC  VC Name                           Property
---  -- ----                           --------
0   0 ContosoCompany2                {}

PS HKCU:\Software> Complete-Transaction
PS HKCU:\Software> dir 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ó folyamatban lévő állapotában 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ő dir parancs mutatja a hatást. A második Új elem parancs azonnal befejeződik, de az első és a harmadik Új elem parancs csak a tranzakció véglegesítéséig lép érvénybe.

A Complete-Transaction parancs véglegesíti a tranzakciót. Ennek eredményeképpen a második dir parancs azt mutatja, hogy az összes új elem hozzá van adva a rendszerleíró adatbázishoz.

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

PS C:\> Start-Transaction -Timeout 2

# Wait two minutes...

PS C:\> Get-Transaction
PS C:\> New-Item HKCU:\Software\ContosoCompany -UseTransaction
PS C:\> Start-Transaction -Timeout 2

# Wait two minutes...

PS C:\> > Get-Transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   -----------
Error                1                 RolledBack

PS C:\> 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 a Start-TransactionTimeout paraméterével indít el egy tranzakciót, amelyet két percen belül be kell fejezni. Ha a tranzakció nem fejeződik be, amikor az időtúllépés lejár, a rendszer automatikusan visszaállítja.

Az időtúllépés lejártakor nem kap értesítést, de a tranzakcióobjektum Állapot tulajdonsága a RolledBack értékre van állítva, és a UseTransaction paramétert használó parancsok sikertelenek.

Paraméterek

-Confirm

Megerősítést kér a parancsmag futtatása előtt.

Paramétertulajdonságok

Típus:SwitchParameter
Alapértelmezett érték:False
Támogatja a helyettesítő karaktereket:False
DontShow:False
Aliasok:Cf

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-Independent

Azt jelzi, hogy ez a parancsmag egy olyan tranzakciót indít el, amely független a folyamatban lévő tranzakcióktól. Alapértelmezés szerint, ha a Start-Transaction parancsot használja, miközben egy másik tranzakció folyamatban van, a rendszer ú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 a Start-Transaction parancsot használja egy tranzakció közben, a rendszer újra felhasználja a meglévő tranzakcióobjektumot, és növeli az előfizetők számát. Az effektus hasonlít az eredeti tranzakcióhoz való csatlakozáshoz. A Undo-Transaction parancs visszaállítja a teljes tranzakciót. A tranzakció befejezéséhez minden előfizetőhöz meg kell adnia egy Complete-Transaction parancsot. Mivel az egyidejűleg folyamatban lévő tranzakciók többsége kapcsolódik, az alapértelmezett érték elegendő a legtöbb használathoz.

Ha megadja a Független 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 állítania az új tranzakciót.

Paramétertulajdonságok

Típus:SwitchParameter
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték: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:

  • Hiba. A tranzakció automatikusan vissza lesz állítva, ha megszakító vagy nem megszakító hiba történik.
  • Megszakítási hiba. A tranzakció automatikusan vissza lesz állítva, ha megszakítási hiba történik.
  • Soha. A tranzakció soha nem lesz automatikusan visszaállítva.

Az alapértelmezett érték az Error.

Paramétertulajdonságok

Típus:RollbackSeverity
Alapértelmezett érték:None
Elfogadott értékek:Error, TerminatingError, Never
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-Timeout

A tranzakció aktív maximális időtartamát adja meg percekben. Az időtúllépés lejártakor a rendszer automatikusan visszaállítja a tranzakciót.

Alapértelmezés szerint nincs időtúllépés a parancssorban indított tranzakciók esetében. Ha a tranzakciókat szkript indítja el, az alapértelmezett időtúllépés 30 perc.

Paramétertulajdonságok

Típus:Int32
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False
Aliasok:TimeoutMins

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-WhatIf

Megjeleníti, mi történne, ha a parancsmag futna. A parancsmag nem fut.

Paramétertulajdonságok

Típus:SwitchParameter
Alapértelmezett érték:False
Támogatja a helyettesítő karaktereket:False
DontShow:False
Aliasok:Wi

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

CommonParameters

Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.

Bevitelek

None

Ehhez a parancsmaghoz nem csövezhet be bemenetet.

Kimenetek

None

Ez a parancsmag nem hoz létre kimenetet.