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 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. 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óiban a Windows PowerShell-beállításjegyzék-szolgáltató támogatja a tranzakciókat. A Microsoft.PowerShell.Commands.Management.TransactedString osztály használatával kifejezéseket is felvehet a tranzakciókba a Windows rendszer bármely olyan verziójában, amely támogatja a Windows PowerShellt. 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.
Start-Transaction
A 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 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
Set-Location hkcu:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
New-ItemProperty "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
Complete-Transaction
Ezek a parancsok elindítják, majd végrehajtják a 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 nem használja a RollbackPreference parancsotStart-Transaction
. 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 második parancskészletben Start-Transaction
a RollbackPreference függvényt használja Never é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ékét általában előnyben részesítik.
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 azt mutatja be, hogy milyen hatással van a használat Start-Transaction
, amíg egy tranzakció folyamatban van.
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 most egy 2 előfizetői darabszámú 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ő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 azt mutatja be, hogy a független paraméterrel Start-Transaction
hogyan indíthat el egy tranzakciót, miközben 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, 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 parancs a Start-Transaction
Független paramétert használja.
Az Get-Transaction
alábbi parancs az aktív tranzakció tranzakció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.
Amikor az aktív tranzakciót egy Undo-Transaction
parancs használatával visszaállítja, az eredeti tranzakció újra 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
parancs használatával 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
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ó 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ő Get-ChildItem parancs megjeleníti az effektust. A második New-Item
parancs azonnal befejeződik, de az első és a harmadik New-Item
parancs csak a tranzakció véglegesítése után lép érvénybe.
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, 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
Jóváhagyást kér a parancsmag futtatása előtt.
Típus: | SwitchParameter |
Aliasok: | cf |
Position: | Named |
Alapértelmezett érték: | False |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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 Start-Transaction
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 Start-Transaction
egy tranzakció folyamatban van, a meglévő tranzakcióobjektum újra felhasználható, és az előfizetők száma növekszik. Az effektus hasonlít az eredeti tranzakcióhoz való csatlakozáshoz. Egy Undo-Transaction
parancs visszaállítja az egész 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.
Típus: | SwitchParameter |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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 megszűnő vagy nem végződő hiba történik.TerminatingError
A rendszer automatikusan visszaállítja a tranzakciót, ha megszűnik a hiba.Never
A rendszer soha nem állítja vissza automatikusan a tranzakciót.
Az alapértelmezett érték Error
.
Típus: | RollbackSeverity |
Elfogadott értékek: | Error, TerminatingError, Never |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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.
Típus: | Int32 |
Aliasok: | TimeoutMins |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-WhatIf
Bemutatja, mi történne a parancsmag futtatásakor. A parancsmag nem fut.
Típus: | SwitchParameter |
Aliasok: | wi |
Position: | Named |
Alapértelmezett érték: | False |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
Bevitelek
None
Ehhez a parancsmaghoz nem csövezhet be bemenetet.
Kimenetek
None
Ez a parancsmag nem hoz létre kimenetet.