Start-Transaction
Memulai transaksi.
Sintaks
Start-Transaction
[-Timeout <Int32>]
[-Independent]
[-RollbackPreference <RollbackSeverity>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Deskripsi
cmdlet Start-Transaction
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.
cmdlet Start-Transaction
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 perintah Complete-Transaction
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 Start-Transaction
pertama memulai transaksi. Perintah New-Item
pertama adalah bagian dari transaksi.
Perintah Start-Transaction
kedua menambahkan pelanggan baru ke transaksi. Perintah Get-Transaction
sekarang mengembalikan transaksi dengan jumlah pelanggan 2. Perintah New-Item
kedua adalah bagian dari transaksi yang sama.
Tidak ada perubahan yang dilakukan pada registri sampai seluruh transaksi selesai. Untuk menyelesaikan transaksi, Anda harus memasukkan dua perintah Complete-Transaction
, 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 independenStart-Transaction
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, perintah Start-Transaction
menggunakan parameter Independen.
Perintah Get-Transaction
yang mengikuti 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 perintah Undo-Transaction
, transaksi asli menjadi aktif lagi.
Perintah New-ItemProperty
, yang merupakan bagian dari transaksi asli, selesai tanpa kesalahan, dan transaksi asli dapat diselesaikan dengan menggunakan perintah Complete-Transaction
.
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 New-Item
pertama dan ketiga menggunakan parameter UseTransaction. Perintah ini adalah bagian dari transaksi. Karena perintah New-Item
kedua tidak menggunakan parameter UseTransaction, perintah tersebut bukan bagian dari transaksi.
Perintah Get-ChildItem pertama menunjukkan efeknya. Perintah New-Item
kedua segera diselesaikan, tetapi perintah New-Item
pertama dan ketiga tidak efektif sampai transaksi dilakukan.
Perintah Complete-Transaction
melakukan 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 TimeoutStart-Transaction
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, Anda tidak diberi tahu, tetapi properti Status objek transaksi diatur ke RolledBack dan perintah yang menggunakan parameter UseTransaction gagal.
Parameter
-Confirm
Meminta konfirmasi sebelum menjalankan cmdlet.
Jenis: | SwitchParameter |
Alias: | cf |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | 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
mengembalikan seluruh transaksi.
Untuk menyelesaikan transaksi, Anda harus memasukkan perintah Complete-Transaction
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.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | 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. -
TerminatingError
Transaksi digulung balik secara otomatis jika terjadi kesalahan penghentian. -
Never
Transaksi tidak pernah digulung balik secara otomatis.
Nilai defaultnya adalah Error
.
Jenis: | RollbackSeverity |
Nilai yang diterima: | Error, TerminatingError, Never |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | 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.
Jenis: | Int32 |
Alias: | TimeoutMins |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-WhatIf
Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.
Jenis: | SwitchParameter |
Alias: | wi |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
Input
None
Anda tidak dapat menyalurkan input ke cmdlet ini.
Output
None
Cmdlet ini tidak menghasilkan output apa pun.