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.
İlişkili Bağlantılar
PowerShell
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin