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.