Bagikan melalui


Complete-Transaction

Menerapkan transaksi aktif.

Sintaks

Complete-Transaction
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]

Deskripsi

cmdlet Complete-Transaction melakukan transaksi aktif. Saat Anda melakukan transaksi, perintah dalam transaksi diselesaikan dan data yang terpengaruh oleh perintah diubah.

Jika transaksi mencakup beberapa pelanggan, untuk melakukan transaksi, Anda harus memasukkan satu perintah Complete-Transaction untuk setiap perintah Start-Transaction.

Cmdlet Complete-Transaction adalah salah satu set cmdlet yang mendukung fitur transaksi di Windows PowerShell. Untuk informasi selengkapnya, lihat about_Transactions.

Contoh

Contoh 1: Menerapkan transaksi

Set-Location HKCU:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Get-ChildItem m*

Hive: HKEY_CURRENT_USER\software

SKC  VC Name                           Property
---  -- ----                           --------
82   1 Microsoft                      {(default)}

Complete-Transaction
Get-ChildItem m*

Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
82   1 Microsoft                      {(default)}
0   0 MyCompany                      {}

Contoh ini menunjukkan apa yang terjadi saat Anda menggunakan cmdlet Complete-Transaction untuk melakukan transaksi.

Perintah Start-Transaction memulai transaksi. Perintah New-Item menggunakan parameter UseTransaction untuk menyertakan perintah dalam transaksi.

Perintah Get-ChildItem pertama menunjukkan bahwa item baru belum ditambahkan ke registri.

Perintah Complete-Transaction menerapkan transaksi, yang membuat registri berubah efektif. Akibatnya, perintah Get-ChildItem kedua menunjukkan bahwa registri diubah.

Contoh 2: Menerapkan transaksi yang memiliki lebih dari satu pelanggan

Set-Location HKCU:\software
Start-Transaction
New-Item MyCompany -UseTransaction

Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
0   0 MyCompany                      {}

Start-Transaction
Get-Transaction

RollbackPreference   SubscriberCount  Status
------------------   ---------------  ------
Error                2                Active

New-ItemProperty -Path MyCompany -Name MyKey -Value -UseTransaction

MyKey
-----
123

Complete-Transaction
Get-Transaction

RollbackPreference   SubscriberCount  Status
------------------   ---------------  ------
Error                1                Active

Get-ChildItem m*

Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
82   1 Microsoft                      {(default)}

Complete-Transaction
Get-ChildItem m*

Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
82   1 Microsoft                      {(default)}
0   1 MyCompany                      {MyKey}

Contoh ini menunjukkan cara menggunakan Complete-Transaction untuk melakukan transaksi yang memiliki lebih dari satu pelanggan.

Untuk melakukan transaksi multi-pelanggan, Anda harus memasukkan satu perintah Complete-Transaction untuk setiap perintah Start-Transaction. Data diubah hanya ketika perintah Complete-Transaction akhir dikirimkan.

Untuk tujuan demonstrasi, contoh ini menunjukkan serangkaian perintah yang dimasukkan di baris perintah. Dalam praktiknya, transaksi kemungkinan akan dijalankan dalam skrip, dengan transaksi sekunder dijalankan oleh fungsi atau skrip pembantu yang dipanggil oleh skrip utama.

Dalam contoh ini, perintah Start-Transaction memulai transaksi. Perintah New-Item dengan parameter UseTransaction menambahkan kunci MyCompany ke kunci Perangkat Lunak. Meskipun cmdlet New-Item mengembalikan objek kunci, data dalam registri belum diubah.

Perintah Start-Transaction kedua menambahkan pelanggan kedua ke transaksi yang ada. Cmdlet Get-Transaction mengonfirmasi bahwa jumlah pelanggan adalah 2. Perintah New-ItemProperty dengan parameter UseTransaction menambahkan entri registri ke kunci MyCompany baru. Sekali lagi, perintah mengembalikan nilai, tetapi registri tidak diubah.

Perintah Complete-Transaction pertama mengurangi jumlah pelanggan sebesar 1. Ini dikonfirmasi oleh perintah Get-Transaction. Namun, tidak ada data yang diubah, sebagaimana dibuktikan oleh perintah Get-ChildItem m*.

Perintah Complete-Transaction kedua menerapkan seluruh transaksi dan mengubah data dalam registri. Ini dikonfirmasi oleh perintah Get-ChildItem m* kedua, yang menunjukkan perubahan.

Contoh 3: Melakukan transaksi yang tidak mengubah data apa pun

Set-Location HKCU:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Get-ChildItem m*

Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
82   1 Microsoft                      {(default)}

Get-ChildItem m* -UseTransaction

Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
82   1 Microsoft                      {(default)}
0   0 MyCompany                      {}

Complete-Transaction

Contoh ini menunjukkan nilai penggunaan perintah Get-*, dan perintah lain yang tidak mengubah data, dalam transaksi. Ketika perintah Get-\* digunakan dalam transaksi, perintah tersebut mendapatkan objek yang merupakan bagian dari transaksi. Ini memungkinkan Anda untuk mempratinjau perubahan dalam transaksi sebelum perubahan diterapkan.

Dalam contoh ini, transaksi dimulai. Perintah New-Item dengan parameter UseTransaction menambahkan kunci baru ke registri sebagai bagian dari transaksi.

Karena kunci registri baru tidak ditambahkan ke registri hingga perintah Complete-Transaction dijalankan, perintah Get-ChildItem sederhana menunjukkan registri tanpa kunci baru.

Namun, ketika Anda menambahkan parameter UseTransaction ke perintah Get-ChildItem, perintah menjadi bagian dari transaksi, dan mendapatkan item dalam transaksi meskipun belum ditambahkan ke data.

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

-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 objek ke cmdlet ini.

Output

None

Cmdlet ini tidak menghasilkan output apa pun.

Catatan

  • Anda tidak dapat mengembalikan transaksi yang telah dilakukan, atau melakukan transaksi yang telah digulung balik.

    Anda tidak dapat mengembalikan transaksi apa pun selain transaksi aktif. Untuk mengembalikan transaksi yang berbeda, Anda harus terlebih dahulu menerapkan atau mengembalikan transaksi aktif.

    Secara default, jika ada bagian dari transaksi yang tidak dapat dilakukan, seperti ketika perintah dalam transaksi menghasilkan kesalahan, seluruh transaksi digulung balik.