Windows PowerShell: Obtener transaccional

PowerShell admite ahora operaciones transaccionales, pero hay una jerarquía para su funcionamiento.

Don Jones

No hay alimentación en números. Una de las nuevas características de la versión 2 de Windows PowerShell es la compatibilidad con operaciones transaccionales. En general, una transacción es dos o más operaciones discretas que deben tener éxito o error juntos como un grupo.

Suponga que está escribiendo un lote de comandos que modifiquen varias claves del registro. Una modificación podría producir un error debido a la falta de permisos o algún otro problema. Si esto ocurre, se Don desea guardar cualquiera de esos cambios. Sólo desea que el lote de los cambios que se produzca si está todo completados con éxito. Eso es exactamente lo que pueden proporcionar transacciones del shell.

Lo que necesitará

Además de la versión 2 de Windows PowerShell, las transacciones sólo están disponibles en versiones posteriores de Windows, Windows Server 2008 y Windows Vista. Aunque Windows PowerShell v2 se ejecutará en los sistemas operativos de Windows XP y Windows Server 2003 anteriores, la compatibilidad con del shell transacciones no se extiende a dichas versiones.

A medida que evoluciona de Windows PowerShell que se convertirá en un patrón común: Las versiones más recientes del shell se pueden ejecutar en versiones anteriores del sistema operativo, pero determinadas características sólo pueden estar disponibles cuando se ejecuta el shell en una versión más reciente de Windows.

El shell es compatible con las transacciones a través de sus proveedores PSDrive. Un PSDrive adapta a algún tipo de almacenamiento, como el registro o el sistema de archivos, sea similar a un sistema de archivos de disco estándar. En concreto, el proveedor PSDrive debe admitir transacciones. En la versión 2 del shell, sólo el proveedor de registro es compatible con las transacciones de forma inmediata.

El shell también permite que otros cmdlets para admitir las transacciones y las transacciones incluyen un parámetro de –UseTransaction. En esencia, el shell proporciona el marco de trabajo para una transacción. A continuación, los cmdlets específicos o proveedores PSDrive realmente deben implementar las funciones necesarias para utilizar dichas transacciones.

Iniciar una transacción.

Puede comenzar una transacción simplemente ejecutando de Inicio de transacción. Si no incluye ningún parámetro y no hay ninguna transacción que ya ha iniciado, a continuación, se iniciará una nueva. Si ejecuta el cmdlet mientras la transacción ya está en curso, es simplemente unirse a la transacción existente y no se iniciará una nueva.

Si ejecuta de –independent de inicio de transacción, a continuación, se inicia una nueva transacción independiente y activa. Para iniciar varias transacciones a la vez, pero sólo uno puede estar activo a la vez. Esto puede dar como resultado una jerarquía de las transacciones:

  • Transacción 1 (inicio de transacción)
  • Transacción 2 (–independent de transacciones de inicio)
  • Transacción 3 (–independent de transacciones de inicio)

Si la transacción 3 está activo, cada comando compatible que se ejecuta dentro de ella se convierte en una parte de la transacción. Cuando termina la transacción 3, por implementarlo hacer de seguridad o enviarlo, 2 de la transacción una vez más estará activo. Aunque una única transacción puede estar activa al mismo tiempo, no se prueban. Es decir, suponga que completa la transacción 3, pero anulará la transacción 2. Nada se realiza como parte de la transacción 3 permanecerá.

Siempre se puede ejecutar de Get-transacciones para ver las transacciones están activos actualmente. De forma predeterminada, automáticamente se deshacer una transacción de servicios (más de unos segundos) cuando se produce un error en un cmdlet dentro de la transacción; se pueden especificar las preferencias de restauración alternativo utilizando los parámetros de de Inicio de transacción.

Uso de una transacción.

Una vez que inicia una transacción, debe conectar explícitamente comandos al mismo mediante el parámetro –UseTransaction. Incluso si un cmdlet admite transacciones, no utilizará automáticamente. Para que la operación de la transacción, debe especificar el parámetro de este modo:

Cd hkcu:\software

Mkdir test

Start-transaction

Del test –usetransaction

Dir

La lista de directorios se incluye la clave del registro de prueba. Aunque se ha eliminado la clave, la eliminación formaba parte de una transacción que aún no se ha confirmado. Si ejecuta del directorio –usetransaction, verá la lista de directorios tal y como existe dentro de la transacción. La clave de prueba no aparece.

Una transacción y las sugerencias de transacciones de cierre.

Se puede cerrar una transacción de dos maneras:

  • Transacciones de deshacer deshará todos los comandos que formaban parte de la transacción
  • Transacciones-finalizar hacer permanentes los comandos que formaban parte de la transacción

El cmdlet de Transacciones de uso le permitirá ejecutar cualquier comando como parte de una transacción. Sin embargo, sólo se pueden incluir comandos que utilizan objetos habilitados para transacciones de Microsoft .NET Framework. Simplemente, no se puede extraer ningún comando anterior en allí y hacer que funcione. Para obtener más información, ejecutar de la Ayuda de about_transactions.

Actualmente, la capacidad para realizar operaciones en el registro puede parecer muy útil. La base de soporte técnico para las operaciones del sistema de archivos transaccional ya existe, aunque el proveedor PSDrive de sistema de archivos aún no los admite. Microsoft parece ser inclinados hacia la que hace más de los objetos de .NET Framework, que es lo que se basa en Windows PowerShell: transaccional. En el futuro, es posible que se pueden incluso transact las operaciones de Active Directory.

La buena noticia es que el shell ya es compatible con las transacciones de diferentes. En otras palabras, si el sistema de archivos era compatible con las transacciones (y sin duda es que lo hará un día), una transacción no puede mezclar las operaciones de archivos y de registro, lo que de hecho, una herramienta muy útil.

 

Don Jones

Don Jones es un fundador de la tecnología concentrado y preguntas de respuestas sobre Windows PowerShell y otras tecnologías en ConcentratedTech.com. También es un autor de Nexus.Realtimepublishers.com, lo que hace que muchos de sus libros disponibles como editions.hrough electrónicos gratuitos su sitio Web.

Contenido relacionado