Start-Transaction
Memulai transaksi.
Sintaks
Default (Default)
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.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | Cf |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-RollbackPreference
Menentukan kondisi di mana transaksi secara otomatis digulung balik. Nilai yang dapat diterima untuk parameter ini adalah:
-
ErrorTransaksi digulung balik secara otomatis jika terjadi kesalahan mengakhiri atau tidak mengakhiri. -
TerminatingErrorTransaksi digulung balik secara otomatis jika terjadi kesalahan penghentian. -
NeverTransaksi tidak pernah digulung balik secara otomatis.
Nilai defaultnya adalah Error.
Properti parameter
| Jenis: | RollbackSeverity |
| Nilai default: | None |
| Nilai yang diterima: | Error, TerminatingError, Never |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | TimeoutMins |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-WhatIf
Menunjukkan apa yang akan terjadi ketika cmdlet dijalankan. Cmdlet tidak dijalankan.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | wi |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
Input
None
Anda tidak dapat menyalurkan input ke cmdlet ini.
Output
None
Cmdlet ini tidak menghasilkan output apa pun.