Condividi tramite


about_Transactions

ARGOMENTO
    about_Transactions

DESCRIZIONE BREVE
    Descrive come gestire le operazioni in transazione in Windows 
    PowerShell. 

DESCRIZIONE DETTAGLIATA
    Le transazioni sono supportate in Windows PowerShell a partire da 
    Windows PowerShell 2.0. Questa funzionalità consente di avviare una 
    transazione, indicare quali comandi fanno parte della transazione ed 
    eseguire il commit o il rollback di una transazione.
    
    
  INFORMAZIONI SULLE TRANSAZIONI

      In Windows PowerShell una transazione è un set di uno o più 
      comandi gestiti come un'unità logica. È possibile completare 
      una transazione (eseguirne il commit), modificando in tal modo 
      i dati interessati dalla transazione. In alternativa, è 
      possibile annullare una transazione (eseguirne il rollback) in 
      modo da non modificare i dati interessati. 

      Poiché i comandi in una transazione vengono gestiti come 
      un'unità, viene eseguito il commit o il rollback di tutti i 
      comandi. 

      Le transazioni sono ampiamente utilizzate nell'elaborazione dei 
      dati, in particolare nelle operazioni di database e nelle 
      transazioni finanziarie. Le transazioni vengono utilizzate più 
      spesso quando lo scenario peggiore per un set di comandi non è 
      l'esito negativo di tutti i comandi, ma piuttosto l'esito 
      positivo di alcuni comandi e l'errore di altri, situazione che 
      provoca uno stato del sistema danneggiato, falso o non 
      interpretabile, difficile da ripristinare.

            
  CMDLET DI TRANSAZIONE

      In Windows PowerShell sono inclusi diversi cmdlet progettati 
      per la gestione delle transazioni.

      Cmdlet                 Descrizione
      --------------         ---------------------------------   
      Start-Transaction      Avvia una nuova transazione. 

      Use-Transaction        Aggiunge un comando o un'espressione
                             alla transazione. Nel comando è 
                             necessario utilizzare oggetti abilitati 
                             per la transazione.

      Undo-Transaction       Esegue il rollback della transazione
                             in modo che nessun dato venga modificato 
                             dalla transazione.

      Complete-Transaction   Esegue il commit della transazione. 
                             I dati interessati dalla transazione 
                             vengono modificati.

      Get-Transaction        Ottiene informazioni sulla transazione
                             attiva.


      Per un elenco di cmdlet di transazione, digitare:

          get-command *transaction

      Per informazioni dettagliate sui cmdlet, digitare:

      get-help <nome-cmdlet> -detailed

      Ad esempio:
    
      get-help use-transaction -detailed


  ELEMENTI ABILITATI PER LE TRANSAZIONI

      Per partecipare a una transazione, sia il cmdlet sia il 
      provider devono supportare le transazioni. Questa funzionalità 
      è incorporata negli oggetti interessati dalla transazione.
   
      Il provider Registry di Windows PowerShell supporta le 
      transazioni in Windows Vista. L'oggetto TransactedString 
      (Microsoft.PowerShell.Commands.Management.TransactedString) 
      funziona con qualsiasi sistema operativo che esegue Windows 
      PowerShell. 

      Altri provider di Windows PowerShell supportano le transazioni. 
      Per trovare i provider di Windows PowerShell della sessione che 
      supportano le transazioni, utilizzare il comando seguente per 
      trovare il valore "Transactions" nella proprietà Capabilities 
      dei provider:

      get-psprovider | where {$_.Capabilities -like "*transactions*"}

      Per ulteriori informazioni su un provider, vedere il relativo 
      argomento della Guida.
      Per accedere agli argomenti della Guida relativi ai provider, 
      digitare:

      get-help <nome-provider>

      Ad esempio, per ottenere l'argomento della Guida relativo al 
      provider Registry, digitare:

      get-help registry
  


  PARAMETRO USETRANSACTION

      I cmdlet che possono supportare le transazioni dispongono di un 
      parametro UseTransaction. Questo parametro include il comando nella 
      transazione attiva. È possibile utilizzare il nome completo del 
      parametro o il relativo alias, "usetx".

      Il parametro può essere utilizzato solo quando la sessione 
      contiene una transazione attiva. Se si immette un comando con 
      il parametro UseTransaction quando non è presente alcuna 
      transazione attiva, il comando ha esito negativo.

      Per trovare i cmdlet con il parametro UseTransaction, digitare:

      get-help * -parameter UseTransaction  

      In Windows PowerShell, tutti i cmdlet di sistema progettati per 
      utilizzare i provider di Windows PowerShell supportano le 
      transazioni. Di conseguenza, è possibile utilizzare i cmdlet 
      del provider per gestire le transazioni. 

      Per ulteriori informazioni sui provider di Windows PowerShell, 
      vedere about_Providers.  
 

  OGGETTO TRANSAZIONE

      Le transazioni sono rappresentate in Windows PowerShell da un 
      oggetto transazione, System.Management.Automation.Transaction.

      L'oggetto ha le seguenti proprietà:

      RollbackPreference: 
          Contiene il set della preferenza di rollback per la 
          transazione corrente. È possibile impostare la preferenza 
          di rollback quando si utilizza Start-Transaction per avviare 
          la transazione. 

          La preferenza di rollback determina le condizioni in base 
          alle quali viene eseguito automaticamente il rollback della 
          transazione. I valori validi sono Error, TerminatingError e 
          Never. Il valore predefinito è Error.

      Status:              
         Contiene lo stato corrente della transazione. I valori 
         validi sono Active, Committed e RolledBack.


      SubscriberCount:              
         Contiene il numero di sottoscrittori della transazione. Un 
         sottoscrittore viene aggiunto a una transazione quando si 
         avvia una transazione mentre ne è in corso un'altra. Il 
         conteggio dei sottoscrittori viene diminuito quando un 
         sottoscrittore esegue il commit della transazione.
    

  TRANSAZIONI ATTIVE

      In Windows PowerShell vi è una sola transazione attiva alla 
      volta ed è possibile gestire solo la transazione attiva. Più 
      transazioni possono essere in corso contemporaneamente nella 
      stessa sessione, ma solo la transazione avviata più 
      recentemente è attiva. 

      Di conseguenza, non è possibile specificare una determinata 
      transazione quando si utilizzano i cmdlet di transazione.  
      I comandi si applicano sempre alla transazione attiva.

      Questa condizione è particolarmente evidente nel comportamento 
      del cmdlet Get-Transaction. Quando si immette un comando 
      Get-Transaction, Get-Transaction ottiene sempre un solo oggetto 
      transazione. Questo oggetto rappresenta la transazione attiva. 

      Per gestire un'altra transazione, è necessario innanzitutto 
      finire la transazione attiva, eseguendone il commit o il 
      rollback. Quando si esegue questa operazione, la transazione 
      precedente diventa automaticamente attiva. Le transazioni 
      diventano attive nell'ordine inverso rispetto a quello di 
      avvio, in modo che la transazione avviata più recentemente  
      sia sempre attiva.


  SOTTOSCRITTORI E TRANSAZIONI INDIPENDENTI

      Se si avvia una transazione mentre ne è in corso un'altra,  
      per impostazione predefinita in Windows PowerShell non viene 
      avviata una nuova transazione. Viene invece aggiunto un 
      sottoscrittore alla transazione corrente.

      Quando una transazione ha più sottoscrittori, un singolo 
      comando Undo-Transaction in qualsiasi momento esegue il 
      rollback dell'intera transazione per tutti i sottoscrittori. 
      Per eseguire il commit della transazione, tuttavia, è 
      necessario immettere un comando Complete-Transaction per ogni 
      sottoscrittore.

      Per trovare il numero di sottoscrittori di una transazione, 
      verificare la proprietà SubscriberCount dell'oggetto 
      transazione. Ad esempio, nel comando seguente viene utilizzato 
      il cmdlet Get-Transaction per ottenere il valore della proprietà 
      SubscriberCount della transazione attiva:

          (Get-Transaction).SubscriberCount
        
      L'aggiunta di un sottoscrittore è il comportamento predefinito 
      perché la maggior parte delle transazioni avviate mentre ne è 
      in corso un'altra è correlata alla transazione originale. Nel 
      modello tipico, uno script che contiene una transazione chiama 
      uno script di supporto che contiene la propria transazione. 
      Poiché le transazioni sono correlate, è necessario eseguirne il 
      rollback o il commit come unità.

      Tuttavia, è possibile avviare una transazione indipendente 
      dalla transazione corrente tramite il parametro Independent del 
      cmdlet Start-Transaction.

      Quando si avvia una transazione indipendente, Start-Transaction 
      crea un nuovo oggetto transazione e la nuova transazione 
      diventa attiva. Il commit o il rollback della transazione 
      indipendente può essere eseguito senza effetti sulla 
      transazione originale.

      Al termine della transazione indipendente (commit o rollback), 
      la transazione originale diventa nuovamente attiva.


  MODIFICA DI DATI

      Quando si utilizzano le transazioni per modificare i dati, i dati 
      interessati dalla transazione non vengono modificati finché non viene 
      eseguito il commit della transazione.
      Tuttavia, gli stessi dati possono essere modificati da comandi 
      che non fanno parte della transazione. 

      Tenere presente questo punto quando si utilizzano le 
      transazioni per gestire dati condivisi. In genere, nei database sono 
      presenti meccanismi che bloccano i dati durante l'utilizzo, allo scopo 
      di impedirne la modifica da parte di altri utenti e di altri comandi, 
      script e funzioni.

      Tuttavia, il blocco è una funzionalità del database. Non è 
      correlato alle transazioni. Se si utilizza un file system o un altro 
      archivio dati abilitato per le transazioni, è possibile modificare i 
      dati mentre la transazione è in corso.


ESEMPI
    Negli esempi di questa sezione viene utilizzato il provider 
    Registry di Windows PowerShell con cui si presuppone che l'utente 
    abbia familiarità. Per informazioni sul provider Registry, 
    digitare "get-help registry".

  ESEMPIO 1: ESECUZIONE DEL COMMIT DI UNA TRANSAZIONE

    Per creare una transazione, utilizzare il cmdlet Start-Transaction.
    Con il comando seguente viene avviata una transazione con le 
    impostazioni predefinite.
 
    start-transaction

    Per includere comandi nella transazione, utilizzare il parametro 
    UseTransaction del cmdlet. Per impostazione predefinita, i comandi 
    non sono inclusi. 

    Ad esempio, il comando seguente, mediante cui viene impostato il 
    percorso corrente nella chiave Software dell'unità HKCU:, non è 
    incluso nella transazione.

        cd hkcu:\Software

    Nel comando seguente, mediante cui viene creata la chiave 
    MyCompany, viene utilizzato il parametro UseTransaction del 
    cmdlet New-Item per includere il comando nella transazione attiva.

        new-item MyCompany -UseTransaction

    Il comando restituisce un oggetto che rappresenta la nuova 
    chiave, ma il Registro di sistema non viene ancora modificato 
    poiché il comando fa parte della transazione.

        Hive: HKEY_CURRENT_USER\Software

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

    Per eseguire il commit della transazione, utilizzare il cmdlet 
    Complete-Transaction.
    Poiché influisce sempre sulla transazione attiva, non è possibile 
    specificare la transazione.

    complete-transaction  


    Di conseguenza, la chiave MyCompany viene aggiunta al Registro di 
    sistema.

    dir m*
       
        Hive: HKEY_CURRENT_USER\software

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


  ESEMPIO 2: ROLLBACK DI UNA TRANSAZIONE

    Per creare una transazione, utilizzare il cmdlet Start-Transaction
    . Con il comando seguente viene avviata una transazione con le 
    impostazioni predefinite.
 
    start-transaction

    Nel comando seguente, mediante cui viene creata la chiave 
    MyOtherCompany, viene utilizzato il parametro UseTransaction del 
    cmdlet New-Item per includere il comando nella transazione attiva.

        new-item MyOtherCompany -UseTransaction

    Il comando restituisce un oggetto che rappresenta la nuova 
    chiave, ma il Registro di sistema non viene ancora modificato 
    poiché il comando fa parte della transazione.

        Hive: HKEY_CURRENT_USER\Software

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


    Per eseguire il rollback della transazione, utilizzare il cmdlet Undo-
    Transaction.
    Poiché influisce sempre sulla transazione attiva, non viene 
    specificata la transazione.

    Undo-transaction  

    Di conseguenza, la chiave MyOtherCompany non viene aggiunta al 
    Registro di sistema.

    dir m*
       
        Hive: HKEY_CURRENT_USER\software

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


 
  ESEMPIO 3: ANTEPRIMA DI UNA TRANSAZIONE

    In genere, i comandi utilizzati in una transazione modificano i 
    dati. Tuttavia, anche i comandi che ottengono dati sono utili in una 
    transazione perché ottengono dati all'interno della transazione. 
    Viene in tal modo fornita un'anteprima delle modifiche che verrebbero 
    causate dal commit della transazione.

    Nell'esempio seguente viene illustrato come utilizzare il comando Get-
    ChildItem (l'alias è "dir") per visualizzare in anteprima le 
    modifiche in una transazione.


    Con il comando seguente viene avviata una transazione.

    start-transaction

    Nel comando seguente viene utilizzato il cmdlet New-ItemProperty  
    per aggiungere la voce del Registro di sistema MyKey alla chiave 
    MyCompany. Viene utilizzato il parametro UseTransaction per  
    includere il comando nella transazione.


        new-itemproperty -path MyCompany -Name MyKey -value 123 
        -UseTransaction

    Il comando restituisce un oggetto che rappresenta la nuova voce 
    del Registro di sistema, ma la voce del Registro di sistema non è 
    stata modificata.

        MyKey
        -----
        123


    Per ottenere gli elementi attualmente presenti nel Registro di 
    sistema, utilizzare un comando Get-ChildItem ("dir") senza il 
    parametro UseTransaction. Con il comando seguente si ottengono 
    gli elementi che iniziano con "M".

    dir m*


    Il risultato evidenzia che non è stata ancora aggiunta alcuna 
    voce alla chiave MyCompany.

        Hive: HKEY_CURRENT_USER\Software

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


    Per visualizzare in anteprima l'effetto del commit della transazione, 
    immettere un comando Get-ChildItem ("dir") con il parametro 
    dati dall'interno UseTransaction. Con questo comando si ottiene una  dei     visualizzazionedella transazione.


    dir m* -useTransaction


    Il risultato evidenza che, se viene eseguito il commit della 
    transazione, la voce MyKey viene aggiunta alla chiave MyCompany.


        Hive: HKEY_CURRENT_USER\Software

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


     
  ESEMPIO 4: COMBINAZIONE DI COMANDI IN TRANSAZIONE E NON

    È possibile immettere comandi non in transazione durante una 
    transazione. Tali comandi hanno un effetto immediato sui dati, ma 
    non sulla transazione.

    Con il comando seguente viene avviata una transazione nella chiave del 
    Registro di sistema HKCU:\Software.

    start-transaction


    Nei tre comandi successivi viene utilizzato il cmdlet New-Item 
    per aggiungere chiavi al Registro di sistema. Nel primo e nel 
    terzo comando viene utilizzato il parametro UseTransaction per 
    includere i comandi nella transazione. Nel secondo comando viene 
    omesso il parametro. Poiché il secondo comando non è incluso 
    nella transazione, risulta immediatamente valido.

        new-item MyCompany1 -UseTransaction

        new-item MyCompany2

        new-item MyCompany3 -UseTransaction


    Per visualizzare lo stato corrente del Registro di sistema, 
    utilizzare un comando Get-ChildItem ("dir") senza il parametro 
    UseTransaction. Con questo comando si ottengono gli elementi che 
    iniziano con "M".

    dir m*

    Il risultato evidenzia che la chiave MyCompany2 viene aggiunta al 
    Registro di sistema, mentre le chiavi MyCompany1 e MyCompany3 che 
    fanno parte della transazione non vengono aggiunte.
     
        Hive: HKEY_CURRENT_USER\Software

        SKC  VC Name                           Property
        ---  -- ----                           --------
        83   1 Microsoft                      {(default)}
         0   0 MyCompany2                      {}


    Con il comando seguente viene eseguito il commit della transazione. 

        complete-transaction

    A questo punto le chiavi aggiunte come parte della transazione vengono 
    visualizzate nel Registro di sistema.

    dir m*

     
        Hive: HKEY_CURRENT_USER\Software

        SKC  VC Name                           Property
        ---  -- ----                           --------
        83   1 Microsoft                      {(default)}
        0    0 MyCompany1                     {}
        0    0 MyCompany2                     {}
        0    0 MyCompany3                     {}


  ESEMPIO 5: UTILIZZO DEL ROLLBACK AUTOMATICO

    Quando un comando in una transazione genera un errore di 
    qualsiasi tipo, viene automaticamente eseguito il rollback della 
    transazione. 

    Questo comportamento predefinito è progettato per gli script che 
    eseguono transazioni. Gli script vengono in genere sottoposti a 
    test accurati e includono la logica di gestione degli errori, 
    pertanto gli errori non sono previsti e devono terminare la 
    transazione. 

    Con il primo comando viene avviata una transazione nella chiave 
    del Registro di sistema HKCU:\Software.

    start-transaction

    Nel comando seguente viene utilizzato il cmdlet New-Item per 
    aggiungere la chiave MyCompany al Registro di sistema. Viene 
    utilizzato il parametro UseTransaction (l'alias è "usetx") per 
    includere il comando nella transazione.

    New-Item MyCompany -UseTX

    Poiché la chiave MyCompany esiste già nel Registro di sistema, 

        New-Item: Chiave del percorso già esistente Riga:1 Carattere:9
        + new-item <<<< MyCompany -usetx

    Con un comando Get-Transaction viene confermato che il rollback della 
    transazione è stato eseguito e che SubscriberCount è 0.

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


        
  ESEMPIO 6: MODIFICA DELLA PREFERENZA DI ROLLBACK

    Se si desidera una maggiore tolleranza di errore nella transazione,  
    è possibile utilizzare il parametro RollbackPreference di 
    Start-Transaction per modificare la preferenza.

    Con il comando seguente viene avviata una transazione con 
    preferenza di rollback "Never".

         start-transaction -rollbackpreference Never

    In questo caso, quando il comando ha esito negativo, il rollback della 
    transazione non viene eseguito automaticamente.

    New-Item MyCompany -UseTX

        New-Item: Chiave del percorso già esistente Riga:1 Carattere:9
        + new-item <<<< MyCompany -usetx
   
     
    Poiché la transazione è ancora attiva, è possibile inviare 
    nuovamente il comando come parte della transazione. 

    New-Item MyOtherCompany -UseTX



  ESEMPIO 7: UTILIZZO DEL CMDLET USE-TRANSACTION

    Il cmdlet Use-Transaction consente di eseguire script diretti su 
    oggetti Microsoft .NET Framework abilitati per le transazioni.
    Use-Transaction accetta un blocco di script che può contenere 
    solo comandi ed espressioni che utilizzano oggetti .NET Framework 
    abilitati per le transazioni, ad esempio istanze della classe 
    Microsoft.PowerShell.Commands.Management.TransactedString.

    Con il comando seguente viene avviata una transazione.

         start-transaction

    Con il comando New-Object seguente viene creata un'istanza della 
    classe TransactedString che viene quindi salvata nella variabile $t.

         $t = New-Object Microsoft.PowerShell.Commands.Management.Tran
         sactedString

    Nel comando seguente viene utilizzato il metodo Append dell'oggetto 
    TransactedString per aggiungere testo alla stringa. Poiché il comando 
    non fa parte della transazione, la modifica diventa immediatamente 
    effettiva.

     $t.append("Windows") 

    Nel comando seguente viene utilizzato lo stesso metodo Append per 
    aggiungere testo, ma il testo viene aggiunto come parte della 
    transazione. Il comando è racchiuso tra parentesi graffe e viene 
    impostato come valore del parametro ScriptBlock di Use-Transaction.  
    Il parametro UseTransaction (UseTx) è obbligatorio.

     use-transaction {$t.append(" PowerShell")} -usetx

    Per vedere il contenuto corrente della stringa sottoposta a 
    transazione in $t, utilizzare il metodo ToString dell'oggetto 
    TransactedString.
                 
     $t.tostring()   

    L'output evidenzia che solo le modifiche non in transazione sono 
    effettive.

     Windows    

    Per vedere il contenuto corrente della stringa sottoposta a 
    transazione in $t dall'interno della transazione, incorporare 
    l'espressione in un comando Use-Transaction. 

     use-transaction {$s.tostring()} -usetx   

    L'output mostra la visualizzazione della transazione.

     Windows PowerShell

    Con il comando seguente viene eseguito il commit della transazione.

     complete-transaction

    Per vedere la stringa finale:

     $t.tostring()
    
     Windows PowerShell


  ESEMPIO 7: GESTIONE DELLE TRANSAZIONI CON PIÙ SOTTOSCRITTORI

    Quando si avvia una transazione mentre ne è in corso un'altra, per 
    impostazione predefinita in Windows PowerShell non viene creata una 
    seconda transazione. Viene invece aggiunto un sottoscrittore alla 
    transazione corrente. 

    In questo esempio viene illustrato come visualizzare e gestire 
    una transazione con più sottoscrittori.

    Innanzitutto, avviare una transazione nella chiave HKCU:\Software.
    
        start-transaction
    
    Nel comando seguente viene utilizzato il comando Get-Transaction 
    per ottenere la transazione attiva.

    get-transaction


    Il risultato mostra l'oggetto che rappresenta la transazione attiva.

        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                1                 Active 
     
    Con il comando seguente viene aggiunta la chiave MyCompany al 
    Registro di sistema.
    Viene utilizzato il parametro UseTransaction per includere il 
    comando nella transazione.
                 
        new-item MyCompany -UseTransaction


    Nel comando seguente viene utilizzato il comando Start-Transaction
     per avviare una transazione. Benché questo comando venga 
     digitato al prompt dei comandi, è più probabile che questo 
     scenario si verifichi quando si esegue uno script che contiene una 
     transazione.

        start-transaction


    Con un comando Get-Transaction viene mostrato che il conteggio dei 
    sottoscrittori nell'oggetto transazione viene incrementato. Il valore 
    è ora 2.   

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

    Nel comando seguente viene utilizzato il cmdlet New-ItemProperty per 
    aggiungere la voce del Registro di sistema MyKey alla chiave 
    MyCompany. Viene utilizzato il parametro UseTransaction per includere 
    il comando nella transazione.

        new-itemproperty -path MyCompany -name MyKey -UseTransaction


    La chiave MyCompany non esiste nel Registro di sistema, ma questo 
    comando ha esito positivo perché i due comandi fanno parte della 
    stessa transazione.

    Con il comando seguente viene eseguito il commit della 
    transazione. Se venisse eseguito il rollback della transazione, tale 
    operazione verrebbe eseguita per tutti i sottoscrittori.

    complete-transaction


    Con un comando Get-Transaction viene mostrato che il conteggio dei 
    è sottoscrittori sull'oggetto transazione è 1, ma il valore di Status  
    ancora Active (non Committed).   


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


    Per completare il commit della transazione, immettere un secondo 
    comando Complete-Transaction. Per eseguire il commit di una 
    transazione con più sottoscrittori, è necessario immettere un comando 
    Complete-Transaction per ogni comando Start-Transaction.

        complete-transaction

      
    Con un altro comando Get-Transaction viene mostrato che il commit 
    della transazione è stato eseguito.


        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                0                 Committed 

  ESEMPIO 8: GESTIONE DI TRANSAZIONI INDIPENDENTI

    Quando si avvia una transazione mentre un'altra transazione è in 
    corso, è possibile utilizzare il parametro Independent di 
    Start-Transaction per rendere la nuova transazione indipendente 
    da quella originale.

    In tal caso, con Start-Transaction viene creato un nuovo oggetto 
    transazione e la nuova transazione diventa attiva.

    Innanzitutto, avviare una transazione nella chiave HKCU:\Software.
    
        start-transaction
     
    Nel comando seguente viene utilizzato il comando Get-Transaction 
    per ottenere la transazione attiva.

    get-transaction


    Il risultato mostra l'oggetto che rappresenta la transazione attiva.

        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                1                 Active 
     
    Con il comando seguente viene aggiunta la chiave del Registro di 
    sistema MyCompany come parte della transazione. Il parametro 
    UseTransaction (UseTx) viene utilizzato per includere il comando nella 
    transazione attiva.

    new-item MyCompany -use


    Con il comando seguente viene avviata una nuova transazione. 
    Viene utilizzato il parametro Independent per indicare che questa 
    transazione non è un sottoscrittore della transazione attiva.

         start-transaction -independent

    Quando si crea una transazione indipendente, la nuova transazione 
    (creata più recentemente) diventa attiva. È possibile utilizzare 
    un comando Get-Transaction per ottenere la transazione attiva. 

    get-transaction

    Si noti che il valore di SubscriberCount della transazione è 1, 
    per indicare che non sono presenti altri sottoscrittori e che la 
    transazione è nuova.

        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                1                 Active 
    Prima di poter gestire la transazione originale, è necessario 
    completare la nuova transazione, ovvero eseguirne il commit o il 
    rollback.

    Con il comando seguente viene aggiunta la chiave MyOtherCompany 
    al Registro di sistema.
    Il parametro UseTransaction (UseTx) viene utilizzato per 
    includere il comando nella transazione attiva.

        new-item MyOtherCompany -usetx

    A questo punto, eseguire il rollback della transazione. Se fosse 
    presente una sola transazione con due sottoscrittori, il rollback 
    della transazione verrebbe eseguito sull'intera transazione per 
    tutti i sottoscrittori.

    Tuttavia, poiché queste transazioni sono indipendenti, il 
    rollback della transazione più recente annulla le modifiche del 
    Registro di sistema e rende attiva la transazione originale.

        undo-transaction

    Con un comando Get-Transaction viene confermato che la 
    transazione originale è ancora attiva nella sessione.


    get-transaction

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

    Con il comando seguente viene eseguito il commit della transazione.

        complete-transaction


    Con un comando Get-ChildItem viene mostrato che il Registro di 
    sistema è stato modificato.

    dir m*


        Hive: HKEY_CURRENT_USER\Software

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


VEDERE ANCHE
    Start-Transaction
    Get-Transaction
    Complete-Transaction
    Undo-Transaction
    Use-Transaction
    Registry (provider)
    about_Providers
    Get-PSProvider
    Get-ChildItem