Undo-Transaction

有効なトランザクションをロールバックします。

構文

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

説明

コマンドレットは Undo-Transaction 、アクティブなトランザクションをロールバックします。 トランザクションをロールバックすると、トランザクション内のコマンドによって行われた変更は解除カード、データは元の形式に復元されます。

トランザクションに複数のサブスクライバーが含まれている場合、コマンドはすべての Undo-Transaction サブスクライバーのトランザクション全体をロールバックします。

既定では、トランザクション内のいずれかのコマンドでエラーが発生すると、トランザクションは自動的にロールバックされます。 ただし、トランザクションは別のロールバック設定を使用して開始できます。このコマンドレットを使用すると、アクティブなトランザクションをいつでもロールバックできます。

この Undo-Transaction コマンドレットは、Windows PowerShell のトランザクション機能をサポートする一連のコマンドレットの 1 つです。 詳細については、「about_Transactions」を参照してください

例 1: 現在のトランザクションをロールバックする

Undo-Transaction

このコマンドは、現在アクティブなトランザクションをロールバックします。

例 2: トランザクションを開始してロールバックする

Set-Location hkcu:\software
Start-Transaction
New-Item -Path "ContosoCompany" -UseTransaction
Undo-Transaction

この例では、トランザクションを開始し、ロールバックします。 その結果、レジストリは変更されません。

例 3: すべてのサブスクライバーのトランザクションをロールバックする

Set-Location hkcu:\software
Start-Transaction
New-Item -Path "ContosoCompany" -UseTransaction
Get-Transaction

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

Start-Transaction
Get-Transaction

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

Undo-Transaction
Get-Transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   -----
Error                0                 RolledBack

この例では、サブスクライバーがトランザクションをロールバックすると、すべてのサブスクライバーに対してトランザクション全体がロールバックされることを示します。

最初のコマンドは、場所をレジストリ キーに HKCU:\Software 変更します。

2 番目のコマンドは、トランザクションを開始します。

3 番目のコマンドでは、コマンドレットを New-Item 使用して新しいレジストリ キーを作成します。 このコマンドでは、 UseTransaction パラメーターを使用して、トランザクションに変更を含めます。

4 番目のコマンドでは、コマンドレットを Get-Transaction 使用してアクティブなトランザクションを取得します。 ステータスが Active であり、サブスクライバーの数が 1 であることに注意してください。

5 番目のコマンドでは、もう一度コマンドを Start-Transaction 使用します。 通常、別のトランザクションの進行中にトランザクションを開始することは、メイン トランザクションで使用されるスクリプトに独自の完全なトランザクションが含まれている場合に発生します。 この例は、段階的に確認できるように対話形式で実行されます。 別のトランザクションの進行中にコマンドを実行 Start-Transaction すると、コマンドは既存のトランザクションを新しいサブスクライバーとして結合し、サブスクライバー数が増加します。

6 番目のコマンドでは、コマンドレットを Get-Transaction 使用してアクティブなトランザクションを取得します。 サブスクライバーの数が 2 になったことに注意してください。

7 番目のコマンドは、トランザクションのロールバックに使用 Undo-Transaction します。 このコマンドはオブジェクトを返しません。

最後のコマンドは、 Get-Transaction アクティブなトランザクション(この場合は最後にアクティブなトランザクション)を取得するコマンドです。 トランザクションがロールバックされたことと、サブスクライバーの数が 0 になったことが結果に示されます。つまり、トランザクションがすべてのサブスクライバーに対してロールバックされました。

パラメーター

-Confirm

コマンドレットの実行前に確認を求めるメッセージが表示されます。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

None

パイプを使用してこのコマンドレットに入力を渡すことはできません。

出力

None

このコマンドレットによる戻り値はありません。

メモ

  • コミット済みのトランザクションはロールバックできません。

    有効でないトランザクションはロールバックできません。 独立した別のトランザクションをロールバックするには、有効なトランザクションを先にコミットするかロールバックする必要があります。

    トランザクションをロールバックすると、そのトランザクションは終了します。 トランザクションを再度使用するには、トランザクションを新たに開始する必要があります。