Start-Transaction
Memulai transaksi.
Sintaks
Start-Transaction
[-Timeout <Int32>]
[-Independent]
[-RollbackPreference <RollbackSeverity>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Deskripsi
Start-Transaction
Cmdlet memulai transaksi, yang merupakan serangkaian perintah yang dikelola sebagai unit. Transaksi dapat diselesaikan, atau dilakukan. Atau, itu dapat sepenuhnya dibatalkan, atau digulung balik, sehingga data apa pun yang diubah oleh transaksi dipulihkan ke keadaan semula.
Karena perintah dalam transaksi dikelola sebagai unit, semua perintah diterapkan atau semua perintah digulung balik.
Secara default, jika ada perintah dalam transaksi yang menghasilkan kesalahan, transaksi digulung balik secara otomatis. Anda dapat menggunakan parameter RollbackPreference untuk mengubah perilaku ini.
Cmdlet yang digunakan dalam transaksi harus dirancang untuk mendukung transaksi. Cmdlet yang mendukung transaksi memiliki parameter UseTransaction . Untuk melakukan transaksi di penyedia, penyedia harus mendukung transaksi. Penyedia Windows PowerShell Registry di Windows Vista dan versi yang lebih baru dari sistem operasi Windows mendukung transaksi. Anda juga dapat menggunakan kelas Microsoft.PowerShell.Commands.Management.TransactedString untuk menyertakan ekspresi dalam transaksi pada versi sistem Windows apa pun yang mendukung Windows PowerShell. Penyedia Windows PowerShell lainnya juga dapat mendukung transaksi.
Hanya satu transaksi yang dapat aktif pada satu waktu. Jika Anda memulai transaksi baru yang independen saat transaksi sedang berlangsung, transaksi baru menjadi transaksi aktif, dan Anda harus menerapkan atau menggulung balik transaksi baru sebelum Anda membuat perubahan pada transaksi asli.
Start-Transaction
cmdlet adalah salah satu set cmdlet yang mendukung fitur transaksi di Windows PowerShell. Untuk informasi selengkapnya, lihat about_Transactions.
Contoh
Contoh 1: Memulai dan mengembalikan transaksi
Set-Location hkcu:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
New-ItemProperty "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
Undo-Transaction
Perintah ini dimulai lalu mengembalikan transaksi. Karena transaksi digulung balik, tidak ada perubahan yang dilakukan pada registri.
Contoh 2: Memulai dan menyelesaikan transaksi
Set-Location hkcu:\software
Start-Transaction
New-Item "ContosoCompany" -UseTransaction
New-ItemProperty "ContosoCompany" -Name "MyKey" -Value 123 -UseTransaction
Complete-Transaction
Perintah ini dimulai lalu menyelesaikan transaksi. Tidak ada perubahan yang dilakukan pada registri hingga Complete-Transaction
perintah digunakan.
Contoh 3: Gunakan preferensi putar kembali yang berbeda
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
Contoh ini menunjukkan efek mengubah nilai parameter RollbackPreference .
Dalam kumpulan perintah pertama, Start-Transaction
tidak menggunakan RollbackPreference. Akibatnya, nilai default (Kesalahan) digunakan. Ketika kesalahan terjadi dalam perintah transaksi, yaitu, jalur yang ditentukan tidak ada, transaksi secara otomatis digulung balik.
Dalam kumpulan perintah kedua, Start-Transaction
menggunakan RollbackPreference dengan nilai Never. Akibatnya, ketika kesalahan terjadi dalam perintah transaksi, transaksi masih aktif dan dapat diselesaikan dengan sukses.
Karena sebagian besar transaksi harus dilakukan tanpa kesalahan, nilai default RollbackPreference biasanya lebih disukai.
Contoh 4: Gunakan cmdlet ini saat transaksi sedang berlangsung
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
Contoh ini menunjukkan efek penggunaan Start-Transaction
saat transaksi sedang berlangsung.
Efeknya seperti bergabung dengan transaksi yang sedang berlangsung.
Meskipun ini adalah perintah yang disederhanakan, skenario ini sering terjadi ketika transaksi melibatkan menjalankan skrip yang mencakup transaksi lengkap.
Perintah pertama Start-Transaction
memulai transaksi. Perintah pertama New-Item
adalah bagian dari transaksi.
Perintah kedua Start-Transaction
menambahkan pelanggan baru ke transaksi. Get-Transaction
Perintah sekarang mengembalikan transaksi dengan jumlah pelanggan 2. Perintah kedua New-Item
adalah bagian dari transaksi yang sama.
Tidak ada perubahan yang dilakukan pada registri sampai seluruh transaksi selesai. Untuk menyelesaikan transaksi, Anda harus memasukkan dua Complete-Transaction
perintah, satu untuk setiap pelanggan. Jika Anda menggulung balik transaksi kapan saja, semua transaksi akan digulung balik untuk kedua pelanggan.
Contoh 5: Memulai transaksi independen saat transaksi sedang berlangsung
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}
Contoh ini menunjukkan efek penggunaan parameter Start-Transaction
Independen untuk memulai transaksi saat transaksi lain sedang berlangsung.
Dalam hal ini, transaksi baru digulung balik tanpa memengaruhi transaksi asli.
Meskipun transaksi secara logis independen, karena hanya satu transaksi yang dapat aktif pada satu waktu, Anda harus menggulung balik atau melakukan transaksi terbaru sebelum meneruskan pekerjaan pada transaksi asli.
Sekumpulan perintah pertama memulai transaksi.
Perintah New-Item
adalah bagian dari transaksi pertama.
Dalam kumpulan perintah kedua, Start-Transaction
perintah menggunakan parameter Independen .
Get-Transaction
Perintah berikut menunjukkan objek transaksi untuk transaksi aktif, yang merupakan yang terbaru.
Jumlah pelanggan sama dengan 1, yang menunjukkan bahwa transaksi tidak terkait.
Ketika transaksi aktif digulung balik dengan menggunakan Undo-Transaction
perintah, transaksi asli menjadi aktif lagi.
New-ItemProperty
Perintah, yang merupakan bagian dari transaksi asli, selesai tanpa kesalahan, dan transaksi asli dapat diselesaikan dengan menggunakan Complete-Transaction
perintah .
Akibatnya, registri diubah.
Contoh 6: Jalankan perintah yang bukan bagian dari transaksi
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 {}
Contoh ini menunjukkan bahwa perintah yang dikirimkan saat transaksi sedang berlangsung dapat disertakan dalam transaksi atau tidak disertakan. Hanya perintah yang menggunakan parameter UseTransaction yang merupakan bagian dari transaksi.
Perintah pertama dan ketiga New-Item
menggunakan parameter UseTransaction . Perintah ini adalah bagian dari transaksi. Karena perintah kedua New-Item
tidak menggunakan parameter UseTransaction , perintah tersebut bukan bagian dari transaksi.
Perintah Get-ChildItem pertama menunjukkan efeknya. Perintah kedua New-Item
segera diselesaikan, tetapi perintah pertama dan ketiga New-Item
tidak efektif sampai transaksi dilakukan.
Perintah Complete-Transaction
menerapkan transaksi. Akibatnya, perintah Get-ChildItem kedua menunjukkan bahwa semua item baru ditambahkan ke registri.
Contoh 7: Mengembalikan transaksi yang tidak selesai dalam waktu tertentu
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
Perintah ini menggunakan parameter Start-Transaction
Batas Waktu untuk memulai transaksi yang harus diselesaikan dalam waktu dua menit. Jika transaksi belum selesai ketika waktu habis kedaluwarsa, transaksi akan digulung balik secara otomatis.
Ketika waktu habis kedaluwarsa, Anda tidak diberi tahu, tetapi properti Status objek transaksi diatur ke RolledBack dan perintah yang menggunakan parameter UseTransaction gagal.
Parameter
-Confirm
Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Independent
Menunjukkan bahwa cmdlet ini memulai transaksi yang independen dari transaksi apa pun yang sedang berlangsung.
Secara default, jika Anda menggunakan Start-Transaction
saat transaksi lain sedang berlangsung, pelanggan baru ditambahkan ke transaksi yang sedang berlangsung. Parameter ini hanya berpengaruh ketika transaksi sudah berlangsung dalam sesi.
Secara default, jika Anda menggunakan Start-Transaction
saat transaksi sedang berlangsung, objek transaksi yang ada digunakan kembali dan jumlah pelanggan bertambah. Efeknya mirip dengan bergabung dengan transaksi asli. Perintah Undo-Transaction
menggulung balik seluruh transaksi.
Untuk menyelesaikan transaksi, Anda harus memasukkan Complete-Transaction
perintah untuk setiap pelanggan.
Karena sebagian besar transaksi yang sedang berlangsung pada saat yang sama terkait, defaultnya cukup untuk sebagian besar penggunaan.
Jika Anda menentukan parameter Independen , cmdlet ini membuat transaksi baru yang dapat diselesaikan atau dibatalkan tanpa memengaruhi transaksi asli. Namun, karena hanya satu transaksi yang dapat aktif pada satu waktu, Anda harus menyelesaikan atau mengembalikan transaksi baru sebelum meneruskan pekerjaan pada transaksi asli.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RollbackPreference
Menentukan kondisi di mana transaksi secara otomatis digulung balik. Nilai yang dapat diterima untuk parameter ini adalah:
Error
Transaksi digulung balik secara otomatis jika terjadi kesalahan mengakhiri atau tidak mengakhiri kesalahan.TerminatingError
Transaksi digulung balik secara otomatis jika terjadi kesalahan penghentian.Never
Transaksi tidak pernah digulung balik secara otomatis.
Nilai defaultnya adalah Error
.
Type: | RollbackSeverity |
Accepted values: | Error, TerminatingError, Never |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Timeout
Menentukan waktu maksimum, dalam menit, bahwa transaksi aktif. Ketika waktu habis kedaluwarsa, transaksi secara otomatis digulung balik.
Secara default, tidak ada waktu habis untuk transaksi yang dimulai di baris perintah. Ketika transaksi dimulai oleh skrip, waktu habis default adalah 30 menit.
Type: | Int32 |
Aliases: | TimeoutMins |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
None
Anda tidak dapat menyalurkan input ke cmdlet ini.
Output
None
Cmdlet ini tidak menghasilkan output apa pun.
Link Terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk