Windows PowerShell: Recupero transazionale

PowerShell ora è in grado di supportare le operazioni transazionali, ma esiste una gerarchia per il funzionamento.

Don Jones

Capacità risulta in numeri. Una delle nuove funzionalità di Windows PowerShell v2 è il supporto per le operazioni transazionali. In genere, una transazione è di due o più operazioni discrete che devono riuscire o non riuscire insieme come gruppo.

Si supponga che si sta scrivendo un batch di comandi che consentono di modificare diverse chiavi del Registro di sistema. Una modifica può non riuscire per mancanza di autorizzazioni o un altro problema. In tal caso, si Don ’t desidera salvare le modifiche. Si desidera batch di modifiche se si sta tutti completate. Questo è esattamente le transazioni della shell possono fornire.

Cosa necessario

Oltre a Windows PowerShell v2, le transazioni sono disponibili solo su Windows Vista, Windows Server 2008 e versioni successive di Windows. Sebbene Windows PowerShell v2 viene eseguito su sistemi operativi Windows XP e Windows Server 2003 precedenti, supporto transazionale della shell non estende tali versioni.

Che diventerà un modello comune come Windows PowerShell in continua evoluzione: Le versioni più recenti della shell sono in esecuzione su versioni precedenti del sistema operativo, ma specifiche funzionalità potrebbero essere disponibili solo quando si esegue una versione più recente di Windows per la shell.

La shell supporta le transazioni tramite il provider PSDrive. Un PSDrive adatta qualche forma di archiviazione, come il file system o nel Registro di sistema, come un file system su disco standard. Il provider PSDrive in particolare deve supportare le transazioni. Nella versione 2 della shell, solo il provider del Registro di sistema supporta transazioni all'esterno della casella.

La shell consente anche di altri cmdlet per supportare le transazioni e le transazioni includerà un parametro –UseTransaction. In sostanza, la shell fornisce il framework di una transazione. Quindi il cmdlet specifici o provider PSDrive effettivamente implementi le funzionalità necessarie per utilizzare le transazioni.

Avvio di una transazione

È possibile iniziare una transazione eseguendo semplicemente Transaction avvia . Se non si includono tutti i parametri e nessuna transazione già avviato, verrà avviata una nuova. Se si esegue il cmdlet mentre è già in corso una transazione, si sta semplicemente aggiunta la transazione e non avviare una nuova.

Se si esegue Transaction avvia –independent , una nuova transazione indipendente viene avviata e reso attiva. È possibile avviare più operazioni contemporaneamente, ma solo uno può essere attivo alla volta. Ciò può causare una gerarchia delle transazioni:

  • Transazione 1 (Transaction Avvia)
  • Transazione 2 (Transaction avvia –independent)
  • Transazione 3 (Transaction avvia –independent)

Se la transazione 3 è attiva, tutti i comandi supportati eseguito all'interno di esso diventano parte della transazione. Quando si Termina operazione 3, in sequenza, eseguire il backup oppure il commit, 2 transazioni nuovamente sarà attivo. Anche se è possibile attiva solo una transazione alla volta, non vengono verificati. Si supponga, completare la transazione 3 ma interrompere la transazione 2. Qualsiasi operazione eseguita nel contesto di transazione 3 rimarrà.

È sempre possibile eseguire Get Transaction per visualizzare le transazioni attualmente attive. Per impostazione predefinita, verrà automaticamente annullare una transazione precedente (più che a breve) quando si verifica un errore su un cmdlet all'interno di una transazione, è possibile specificare le preferenze di ripristino alternativo utilizzando parametri di Transaction avvia .

Utilizzo di una transazione

Una volta che si avvia una transazione, è necessario associare esplicitamente comandi utilizzando il parametro –UseTransaction. Anche se un cmdlet supporta le transazioni, non utilizzerà tali automaticamente. È necessario specificare il parametro affinché l'operazione di essere coperta dalla transazione, come segue:

Cd hkcu:\software

Mkdir test

Start-transaction

Del test –usetransaction

Dir

L'elenco delle directory includerà la chiave di registro di test. Anche se tale chiave è stata eliminata, l'eliminazione non è parte di una transazione non è ancora stato eseguito il commit. Se si esegue di Dir –usetransaction, verrà visualizzato l'elenco delle directory presente all'interno di una transazione. La chiave di prova non verrà elencata.

Suggerimenti di transazioni e una transazione di chiusura

È possibile chiudere una transazione in due modi:

  • Operazione di annullamento riporterà i comandi che facevano parte della transazione
  • Operazione completata renderà permanente i comandi che facevano parte della transazione

Il cmdlet di Usa transazione consente di eseguire qualsiasi comando come parte di una transazione. Tuttavia, è possibile includere solo i comandi che utilizzano oggetti abilitati alla transazione di Microsoft .NET Framework. Impossibile solo pop qualsiasi comando precedente in tale posizione e dispone di funzioni. Per ulteriori informazioni, eseguire Guida about_transactions .

Attualmente, la possibilità di eseguire transazioni all'interno del Registro di sistema potrebbe sembrare marginalmente utile. Sottostante il supporto per le operazioni di sistema transazionale file già esistente, sebbene il provider PSDrive di sistema non sono ancora supportati. Microsoft sembra essere leaning verso la creazione di altri oggetti di .NET Framework, ovvero Windows PowerShell si basa — transazionale. In futuro, forse è possibile persino transact operazioni di Active Directory.

La buona notizia è che la shell supporta già transazioni eterogenee. In altre parole, se il file system supporta transazioni e certamente è che sarà un giorno, una singola transazione Impossibile combinare operazioni di file e del Registro di sistema, rendendo piuttosto uno strumento utile in realtà.

 

Don Jones

Don Jones è un fondatore di tecnologia incentrati e risposte alle domande su Windows PowerShell e altre tecnologie di ConcentratedTech.com. È anche autore di Nexus.Realtimepublishers.com, rende molti dei suoi libri disponibili come libero editions.hrough elettronico suo sito Web.

Contenuto correlato