Aracılığıyla paylaş


Start-Transaction

Bir işlem başlatır.

Syntax

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

Description

Start-Transaction Cmdlet, birim olarak yönetilen bir dizi komut olan bir işlemi başlatır. İşlem tamamlanabilir veya işlenebilir. Alternatif olarak, işlem tarafından değiştirilen tüm verilerin özgün durumuna geri yüklenmesi için tamamen geri alınabilir veya geri alınabilir. Bir işlemdeki komutlar birim olarak yönetildiğinden, tüm komutlar işlenir veya tüm komutlar geri alınır.

Varsayılan olarak, işlemdeki herhangi bir komut hata oluşturursa, işlemler otomatik olarak geri alınır. Bu davranışı değiştirmek için RollbackPreference parametresini kullanabilirsiniz.

Bir işlemde kullanılan cmdlet'ler, işlemleri destekleyecek şekilde tasarlanmalıdır. İşlemleri destekleyen cmdlet'lerin UseTransaction parametresi vardır. Sağlayıcıda işlem gerçekleştirmek için sağlayıcının işlemleri desteklemesi gerekir. Windows Vista'daki Windows PowerShell Kayıt Defteri sağlayıcısı ve Windows işletim sisteminin sonraki sürümleri işlemleri destekler. Microsoft.PowerShell.Commands.Management.TransactedString sınıfını, Windows sisteminin Windows PowerShell'i destekleyen herhangi bir sürümündeki işlemlere ifadeler eklemek için de kullanabilirsiniz. Diğer Windows PowerShell sağlayıcıları da işlemleri destekleyebilir.

Aynı anda yalnızca bir işlem etkin olabilir. Bir işlem devam ederken yeni, bağımsız bir işlem başlatırsanız, yeni işlem etkin işlem olur ve özgün işlemde herhangi bir değişiklik yapmadan önce yeni işlemi işlemeniz veya geri almanız gerekir.

Start-Transaction cmdlet, Windows PowerShell'deki işlemler özelliğini destekleyen bir cmdlet kümesidir. Daha fazla bilgi için bkz . about_Transactions.

Örnekler

Örnek 1: bir işlemi başlatma ve geri alma

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

Bu komutlar bir işlemi başlatır ve geri alır. İşlem geri alındığından kayıt defterinde değişiklik yapılmaz.

Örnek 2: İşlem başlatma ve tamamlama

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

Bu komutlar bir işlemi başlatır ve tamamlar. Komut kullanılana kadar Complete-Transaction kayıt defterinde değişiklik yapılmaz.

Örnek 3: Farklı geri alma tercihleri kullanma

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

Bu örnek, RollbackPreference parametre değerini değiştirmenin etkisini gösterir.

İlk komut Start-Transaction kümesinde RollbackPreference kullanmaz. Sonuç olarak, varsayılan değer (Hata) kullanılır. Bir işlem komutunda bir hata oluştuğunda, yani belirtilen yol mevcut olmadığında, işlem otomatik olarak geri alınır.

İkinci komut kümesinde, Start-Transaction Hiçbir Zaman değeriyle RollbackPreference kullanır. Sonuç olarak, bir işlem komutunda bir hata oluştuğunda, işlem hala etkindir ve başarıyla tamamlanabilir.

Çoğu işlemin hatasız gerçekleştirilmesi gerektiğinden , genellikle RollbackPreference varsayılan değeri tercih edilir.

Örnek 4: İşlem devam ederken bu cmdlet'i kullanın

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

Bu örnek, bir işlem devam ederken kullanmanın Start-Transaction etkisini gösterir. Etkisi, devam eden işlemi birleştirmeye çok benzer.

Bu basitleştirilmiş bir komut olsa da, bu senaryo genellikle işlem tam bir işlem içeren bir betik çalıştırmayı içerdiğinde ortaya çıkar.

İlk Start-Transaction komut işlemi başlatır. İlk New-Item komut işlemin bir parçasıdır.

İkinci Start-Transaction komut işleme yeni bir abone ekler. Komutu Get-Transaction artık abone sayısı 2 olan bir işlem döndürür. İkinci New-Item komut aynı işlemin bir parçasıdır.

İşlemin tamamı tamamlanana kadar kayıt defterinde değişiklik yapılmaz. İşlemi tamamlamak için her abone için bir komut olmak üzere iki Complete-Transaction komut girmeniz gerekir. Herhangi bir noktada işlemi geri alırsanız, her iki abone için de tüm işlem geri alınır.

Örnek 5: İşlem devam ederken bağımsız bir işlem başlatma

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}

Bu örnekte, başka bir işlem devam ederken işlem başlatmak için bağımsız parametresini Start-Transaction kullanmanın etkisi gösterilmektedir. Bu durumda, yeni işlem özgün işlemi etkilemeden geri alınır.

İşlemler mantıksal olarak bağımsız olsa da, aynı anda yalnızca bir işlem etkin olabileceğinden, özgün işlemdeki çalışmayı devam ettirmeden önce en yeni işlemi geri almalı veya işlemeniz gerekir.

İlk komut kümesi bir işlem başlatır. komutu New-Item ilk işlemin bir parçasıdır.

İkinci komut kümesinde Start-Transaction komutu Independent parametresini kullanır. Aşağıdaki Get-Transaction komut, en yeni olan etkin işlemin işlem nesnesini gösterir. Abone sayısı 1'e eşittir, bu da işlemlerin ilgisiz olduğunu gösterir.

Etkin işlem bir Undo-Transaction komut kullanılarak geri alındığında, özgün işlem yeniden etkin hale gelir.

Özgün New-ItemProperty işlemin parçası olan komut hatasız tamamlanır ve özgün işlem komutu kullanılarak Complete-Transaction tamamlanabilir. Sonuç olarak, kayıt defteri değiştirilir.

Örnek 6: İşlemin parçası olmayan komutları çalıştırma

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

Bu örnek, bir işlem devam ederken gönderilen komutların işleme dahil edilebileceğini veya dahil edilemediğini gösterir. Yalnızca UseTransaction parametresini kullanan komutlar işlemin bir parçasıdır.

birinci ve üçüncü New-Item komutlar UseTransaction parametresini kullanır. Bu komutlar işlemin bir parçasıdır. İkinci New-Item komut UseTransaction parametresini kullanmadığından, işlemin bir parçası değildir.

İlk Get-ChildItem komutu efekti gösterir. İkinci New-Item komut hemen tamamlanır, ancak ilk ve üçüncü New-Item komutlar işlem tamamlanana kadar etkili olmaz.

Complete-Transaction komutu işlemi işler. Sonuç olarak, ikinci Get-ChildItem komutu tüm yeni öğelerin kayıt defterine eklendiğini gösterir.

Örnek 7: Belirtilen sürede bitmeyen bir işlemi geri alma

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

Bu komut, iki dakika içinde tamamlanması gereken bir işlemi başlatmak için zaman aşımı parametresini Start-Transaction kullanır. Zaman aşımı süresi dolduğunda işlem tamamlanmazsa, otomatik olarak geri alınır.

Zaman aşımı süresi dolduğunda size bildirilir, ancak işlem nesnesinin Status özelliği RolledBack olarak ayarlanır ve UseTransaction parametresini kullanan komutlar başarısız olur.

Parametreler

-Confirm

Cmdlet'i çalıştırmadan önce sizden onay ister.

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

-Independent

Bu cmdlet'in devam eden işlemlerden bağımsız bir işlem başlattığını gösterir. Varsayılan olarak, başka bir işlem devam ederken kullanırsanız Start-Transaction , devam eden işleme yeni bir abone eklenir. Bu parametre yalnızca oturumda bir işlem zaten devam ederken bir etkiye sahiptir.

Varsayılan olarak, bir işlem devam ederken kullanırsanız Start-Transaction , mevcut işlem nesnesi yeniden kullanılır ve abone sayısı artırılır. Etkisi, özgün işlemi birleştirmeye çok benzer. Komut Undo-Transaction , işlemin tamamını geri alır. İşlemi tamamlamak için her abone için bir Complete-Transaction komut girmeniz gerekir. Aynı anda devam eden işlemlerin çoğu ilişkili olduğundan, varsayılan çoğu kullanım için yeterlidir.

Bağımsız parametresini belirtirseniz, bu cmdlet özgün işlemi etkilemeden tamamlanabilir veya geri alınabilecek yeni bir işlem oluşturur. Ancak, aynı anda yalnızca bir işlem etkin olabileceğinden, özgün işlemdeki çalışmayı devam ettirmeden önce yeni işlemi tamamlamanız veya geri almanız gerekir.

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

-RollbackPreference

Bir işlemin otomatik olarak geri alındığı koşulları belirtir. Bu parametrenin kabul edilebilir değerleri şunlardır:

  • Error Sonlandırıcı veya sonlandırılmayan bir hata oluşursa işlem otomatik olarak geri alınır.
  • TerminatingError Sonlandırıcı bir hata oluşursa işlem otomatik olarak geri alınır.
  • Never İşlem hiçbir zaman otomatik olarak geri alınmazdı.

Varsayılan değer şudur: Error.

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

-Timeout

İşlemin etkin olduğu en uzun süreyi dakika cinsinden belirtir. Zaman aşımı süresi dolduğunda işlem otomatik olarak geri alınır.

Varsayılan olarak, komut satırında başlatılan işlemler için zaman aşımı yoktur. İşlemler bir betik tarafından başlatıldığında varsayılan zaman aşımı 30 dakikadır.

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

-WhatIf

Cmdlet çalıştırılıyorsa ne olacağını gösterir. Cmdlet çalıştırılmaz.

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

Girişler

None

Bu cmdlet'e giriş kanalı yapamazsınız.

Çıkışlar

None

Bu cmdlet herhangi bir çıkış oluşturmaz.