Complete-Transaction

Menerapkan transaksi aktif.

Sintaks

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

Deskripsi

Complete-Transaction Cmdlet 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 Complete-Transaction perintah untuk setiap Start-Transaction perintah.

Complete-Transaction Cmdlet 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 Complete-Transaction cmdlet untuk melakukan transaksi.

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

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

Complete-Transaction Perintah melakukan transaksi, yang membuat registri berubah efektif. Akibatnya, perintah kedua Get-ChildItem 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 Complete-Transaction perintah untuk setiap Start-Transaction perintah. Data hanya diubah ketika perintah akhir Complete-Transaction 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, Start-Transaction perintah memulai transaksi. New-Item Perintah dengan parameter UseTransaction menambahkan kunci MyCompany ke kunci Perangkat Lunak. New-Item Meskipun cmdlet mengembalikan objek kunci, data dalam registri belum diubah.

Perintah kedua Start-Transaction menambahkan pelanggan kedua ke transaksi yang ada. Get-Transaction Cmdlet 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 pertama Complete-Transaction mengurangi jumlah pelanggan sebesar 1. Ini dikonfirmasi oleh Get-Transaction perintah. Namun, tidak ada data yang diubah, seperti yang Get-ChildItem m* dibuktikan oleh perintah.

Perintah kedua Complete-Transaction menerapkan seluruh transaksi dan mengubah data dalam registri. Ini dikonfirmasi oleh perintah kedua Get-ChildItem m* , 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. Get-\* Ketika perintah digunakan dalam transaksi, perintah 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 Complete-Transaction perintah dijalankan, perintah sederhana Get-ChildItem menunjukkan registri tanpa kunci baru.

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

Parameter

-Confirm

Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value: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
Accept pipeline input:False
Accept wildcard characters: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.