Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este tema describe cómo crear un proveedor de PowerShell para Windows que pueda manipular los datos en un almacén de datos. En este tema, los elementos de datos en el almacén se denominan los "elementos" del almacén de datos. Como consecuencia, un proveedor que puede manipular los datos en la tienda se denomina proveedor de elementos de Windows PowerShell.
Nota:
Puedes descargar el archivo fuente en C# (AccessDBSampleProvider03.cs) de este proveedor utilizando el Microsoft Windows Software Development Kit para Windows Vista y los componentes de ejecución de .NET Framework 3.0. Para las instrucciones de descarga, consulta Cómo instalar Windows PowerShell y descargar el SDK de Windows PowerShell.
Los archivos fuente descargados están disponibles en el PowerShell Samples directorio. Para más información sobre otras implementaciones de proveedores de Windows PowerShell, consulte Diseñando su proveedor de PowerShell para Windows.
El proveedor de elementos de Windows PowerShell descrito en este tema obtiene datos de una base de datos de Access. En este caso, un "elemento" es o bien una tabla en la base de datos Access o una fila en una tabla.
Definición de la clase proveedor de ítems PowerShell de Windows
Un proveedor de ítems de PowerShell para Windows debe definir una clase .NET que derive de la clase base System.Management.Automation.Provider.ItemCmdletProvider . A continuación se muestra la definición de clase para el proveedor de elementos descrita en esta sección.
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : ItemCmdletProvider
Obsábanse que en esta definición de clase, el atributo System.Management.Automation.Provider.CmdletProviderAttribute incluye dos parámetros. El primer parámetro especifica un nombre fácil de usar para el proveedor que utiliza Windows PowerShell. El segundo parámetro especifica las capacidades específicas de PowerShell de Windows que el proveedor expone al entorno de ejecución de Windows PowerShell durante el procesamiento de comandos. Para este proveedor, no hay capacidades específicas de Windows para PowerShell añadidas.
Definición de la funcionalidad base
Como se describe en Design Your Windows PowerShell Provider, la clase System.Management.Automation.Provider.DriveCmdletProvider deriva de varias otras clases que ofrecían diferentes funcionalidades de proveedores. Por tanto, un proveedor de elementos de Windows PowerShell debe definir toda la funcionalidad proporcionada por esas clases.
Para más información sobre cómo implementar funcionalidades para añadir información de inicialización específica de la sesión y para liberar recursos utilizados por el proveedor, véase Creación de un proveedor básico de PowerShell para Windows. Sin embargo, la mayoría de los proveedores, incluido el que se describe aquí, pueden usar la implementación predeterminada de esta funcionalidad que ofrece Windows PowerShell.
Antes de que el proveedor de ítems PowerShell de Windows pueda manipular los elementos en la almacén, debe implementar los métodos de la clase base System.Management.Automation.Provider.DriveCmdletProvider para acceder al almacén de datos. Para más información sobre cómo implementar esta clase, consulte Creación de un proveedor de unidades PowerShell para Windows.
Comprobación de la validez del camino
Al buscar un dato, el entorno de ejecución de Windows PowerShell proporciona una ruta de Windows PowerShell al proveedor, tal como se define en la sección "Conceptos de PSPath" de Cómo funciona Windows PowerShell. Un proveedor de elementos de Windows PowerShell debe verificar la validez sintáctica y semántica de cualquier ruta que le sea transmitida implementando el método System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath . Este método devuelve true si el camino es válido, y false en caso contrario. Ten en cuenta que la implementación de este método no debe verificar la existencia del elemento en el camino, sino solo que el camino es sintácticamente y semánticamente correcto.
Aquí está la implementación del método System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath para este proveedor. Ten en cuenta que esta implementación llama a un método auxiliar NormalizePath para convertir todos los separadores del camino a uno uniforme.
protected override bool IsValidPath(string path)
{
bool result = true;
// check if the path is null or empty
if (String.IsNullOrEmpty(path))
{
result = false;
}
// convert all separators in the path to a uniform one
path = NormalizePath(path);
// split the path into individual chunks
string[] pathChunks = path.Split(pathSeparator.ToCharArray());
foreach (string pathChunk in pathChunks)
{
if (pathChunk.Length == 0)
{
result = false;
}
}
return result;
} // IsValidPath
Determinar si existe un objeto
Tras verificar la ruta, el entorno de ejecución de Windows PowerShell debe determinar si existe un dato en esa ruta. Para soportar este tipo de consulta, el proveedor de ítems PowerShell de Windows implementa el método System.Management.Automation.Provider.ItemCmdletProvider.ItemExists . Este método devuelve true un elemento que se encuentra en la ruta especificada y false (por defecto) en caso contrario.
Aquí está la implementación del método System.Management.Automation.Provider.ItemCmdletProvider.ItemExists para este proveedor. Ten en cuenta que este método llama a los métodos auxiliares PathIsDrive, ChunkPath y GetTable , y utiliza un objeto DatabaseTableInfo definido por el proveedor.
protected override bool ItemExists(string path)
{
// check if the path represented is a drive
if (PathIsDrive(path))
{
return true;
}
// Obtain type, table name and row number from path
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
DatabaseTableInfo table = GetTable(tableName);
if (type == PathType.Table)
{
// if specified path represents a table then DatabaseTableInfo
// object for the same should exist
if (table != null)
{
return true;
}
}
else if (type == PathType.Row)
{
// if specified path represents a row then DatabaseTableInfo should
// exist for the table and then specified row number must be within
// the maximum row count in the table
if (table != null && rowNumber < table.RowCount)
{
return true;
}
}
return false;
} // ItemExists
Cosas a recordar sobre la implementación de ItemExists
Las siguientes condiciones pueden aplicarse a tu implementación de System.Management.Automation.Provider.ItemCmdletProvider.ItemExists:
- Al definir la clase de proveedor, un proveedor de ítems de Windows PowerShell puede declarar capacidades de proveedor de
ExpandWildcards,Filter,Include, oExclude, a partir de la enumeración System.Management.Automation.Provider.ProviderCapabilities . En estos casos, la implementación del método System.Management.Automation.Provider.ItemCmdletProvider.ItemExists debe garantizar que la ruta que se le pasa cumple con los requisitos de las capacidades especificadas. Para ello, el método debe acceder a la propiedad correspondiente, por ejemplo, las propiedades System.Management.Automation.Provider.CmdletProvider.Exclude y System.Management.Automation.Provider.CmdletProvider.Include properties. - La implementación de este método debería gestionar cualquier forma de acceso al elemento que pueda hacer visible el elemento para el usuario. Por ejemplo, si un usuario tiene acceso de escritura a un archivo a través del proveedor del Sistema de Archivos (suministrado por Windows PowerShell), pero no acceso de lectura, el archivo sigue existiendo y System.Management.Automation.Provider.ItemCmdletProvider.ItemExists devuelve
true. Tu implementación puede requerir comprobar un elemento padre para ver si el elemento hijo puede enumerarse.
Adjuntar parámetros dinámicos al cmdlet de Test-Path
A veces, el Test-Path cmdlet que llama a System.Management.Automation.Provider.ItemCmdletProvider.ItemExists requiere parámetros adicionales que se especifican dinámicamente en tiempo de ejecución. Para proporcionar estos parámetros dinámicos, el proveedor de ítems de Windows PowerShell debe implementar el método System.Management.Automation.Provider.ItemCmdletProvider.ItemExistsDynamicParameters . Este método recupera los parámetros dinámicos del elemento en la ruta indicada y devuelve un objeto que tiene propiedades y campos con atributos de análisis similar a una clase cmdlet o un objeto System.Management.Automation.RuntimeDefinedParameterDictionary . El entorno de ejecución de Windows PowerShell utiliza el objeto devuelto para añadir los parámetros al Test-Path cmdlet.
Este proveedor de elementos de Windows PowerShell no implementa este método. Sin embargo, el siguiente código es la implementación predeterminada de este método.
Recuperar un objeto
Para recuperar un elemento, el proveedor de ítems de Windows PowerShell debe sobrescribir el método System.Management.Automation.Provider.ItemCmdletProvider.GetItem para soportar llamadas desde el Get-Item cmdlet. Este método escribe el elemento utilizando el método System.Management.Automation.Provider.CmdletProvider.WriteItemObject .
Aquí está la implementación del método System.Management.Automation.Provider.ItemCmdletProvider.GetItem para este proveedor. Ten en cuenta que este método utiliza los métodos helper GetTable y GetRow para recuperar elementos que son tablas en la base de datos Access o filas en una tabla de datos.
protected override void GetItem(string path)
{
// check if the path represented is a drive
if (PathIsDrive(path))
{
WriteItemObject(this.PSDriveInfo, path, true);
return;
}// if (PathIsDrive...
// Get table name and row information from the path and do
// necessary actions
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
if (type == PathType.Table)
{
DatabaseTableInfo table = GetTable(tableName);
WriteItemObject(table, path, true);
}
else if (type == PathType.Row)
{
DatabaseRowInfo row = GetRow(tableName, rowNumber);
WriteItemObject(row, path, false);
}
else
{
ThrowTerminatingInvalidPathException(path);
}
} // GetItem
Cosas a recordar sobre la implementación de GetItem
Las siguientes condiciones pueden aplicarse a una implementación de System.Management.Automation.Provider.ItemCmdletProvider.GetItem:
Al definir la clase de proveedor, un proveedor de ítems de Windows PowerShell puede declarar capacidades de proveedor de
ExpandWildcards,Filter,Include, oExclude, a partir de la enumeración System.Management.Automation.Provider.ProviderCapabilities . En estos casos, la implementación de System.Management.Automation.Provider.ItemCmdletProvider.GetItem debe garantizar que la ruta pasada al método cumpla esos requisitos. Para ello, el método debe acceder a la propiedad correspondiente, por ejemplo, las propiedades System.Management.Automation.Provider.CmdletProvider.Exclude y System.Management.Automation.Provider.CmdletProvider.Include properties.Por defecto, las sobrescrituras de este método no deberían recuperar objetos que generalmente están ocultos al usuario a menos que la propiedad System.Management.Automation.Provider.CmdletProvider.Force esté configurada como
true. Por ejemplo, el método System.Management.Automation.Provider.ItemCmdletProvider.GetItem para el proveedor del Sistema de Archivos comprueba la propiedad System.Management.Automation.Provider.CmdletProvider.Force antes de intentar llamar a System.Management.Automation.Provider.CmdletProvider.WriteItemObject para archivos ocultos o del sistema.
Adjuntar parámetros dinámicos al cmdlet de Get-Item
A veces el Get-Item cmdlet requiere parámetros adicionales que se especifican dinámicamente en tiempo de ejecución. Para proporcionar estos parámetros dinámicos, el proveedor de ítems de Windows PowerShell debe implementar el método System.Management.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters . Este método recupera los parámetros dinámicos del elemento en la ruta indicada y devuelve un objeto que tiene propiedades y campos con atributos de análisis similar a una clase cmdlet o un objeto System.Management.Automation.RuntimeDefinedParameterDictionary . El entorno de ejecución de Windows PowerShell utiliza el objeto devuelto para añadir los parámetros al Get-Item cmdlet.
Este proveedor no implementa este método. Sin embargo, el siguiente código es la implementación predeterminada de este método.
Colocación de un objeto
Para establecer un elemento, el proveedor de ítems de Windows PowerShell debe sobrescribir el método System.Management.Automation.Provider.ItemCmdletProvider.SetItem para soportar llamadas desde el Set-Item cmdlet. Este método establece el valor del elemento en la ruta especificada.
Este proveedor no proporciona una anulación para el método System.Management.Automation.Provider.ItemCmdletProvider.SetItem . Sin embargo, la siguiente es la implementación predeterminada de este método.
Cosas a recordar sobre la implementación de SetItem
Las siguientes condiciones pueden aplicarse a tu implementación de System.Management.Automation.Provider.ItemCmdletProvider.SetItem:
Al definir la clase de proveedor, un proveedor de ítems de Windows PowerShell puede declarar capacidades de proveedor de
ExpandWildcards,Filter,Include, oExclude, a partir de la enumeración System.Management.Automation.Provider.ProviderCapabilities . En estos casos, la implementación de System.Management.Automation.Provider.ItemCmdletProvider.SetItem debe garantizar que la ruta pasada al método cumpla esos requisitos. Para ello, el método debe acceder a la propiedad correspondiente, por ejemplo, las propiedades System.Management.Automation.Provider.CmdletProvider.Exclude y System.Management.Automation.Provider.CmdletProvider.Include properties.Por defecto, las sobrescrituras de este método no deben establecer ni escribir objetos ocultos al usuario a menos que la propiedad System.Management.Automation.Provider.CmdletProvider.Force esté configurada en
true. Se debe enviar un error al método System.Management.Automation.Provider.CmdletProvider.WriteError si la ruta representa un elemento oculto y System.Management.Automation.Provider.CmdletProvider.Force está configurado comofalse.Tu implementación del método System.Management.Automation.Provider.ItemCmdletProvider.SetItem debe llamar a System.Management.Automation.Provider.CmdletProvider.ShouldProcess y verificar su valor de retorno antes de realizar cualquier cambio en el almacén de datos. Este método se utiliza para confirmar la ejecución de una operación cuando se realiza un cambio en el almacén de datos, por ejemplo, la eliminación de archivos. El método System.Management.Automation.Provider.CmdletProvider.ShouldProcess envía el nombre del recurso a cambiar al usuario, teniendo en cuenta el entorno de ejecución de Windows PowerShell cualquier configuración de línea de comandos o variable de preferencia para determinar qué debe mostrarse.
Tras la llamada a System.Management.Automation.Provider.CmdletProvider.ShouldProcess ,
trueel método System.Management.Automation.Provider.ItemCmdletProvider.SetItem debe llamar al método System.Management.Automation.Provider.CmdletProvider.ShouldContinue . Este método envía un mensaje al usuario para permitir retroalimentación que verifique si la operación debe continuar. La llamada a System.Management.Automation.Provider.CmdletProvider.ShouldContinue permite una comprobación adicional para posibles modificaciones peligrosas del sistema.
Recuperación de parámetros dinámicos para SetItem
A veces el Set-Item cmdlet requiere parámetros adicionales que se especifican dinámicamente en tiempo de ejecución. Para proporcionar estos parámetros dinámicos, el proveedor de ítems de Windows PowerShell debe implementar el método System.Management.Automation.Provider.ItemCmdletProvider.SetItemDynamicParameters . Este método recupera los parámetros dinámicos del elemento en la ruta indicada y devuelve un objeto que tiene propiedades y campos con atributos de análisis similar a una clase cmdlet o un objeto System.Management.Automation.RuntimeDefinedParameterDictionary . El entorno de ejecución de Windows PowerShell utiliza el objeto devuelto para añadir los parámetros al Set-Item cmdlet.
Este proveedor no implementa este método. Sin embargo, el siguiente código es la implementación predeterminada de este método.
Limpiar un artículo
Para borrar un elemento, el proveedor de ítems de Windows PowerShell implementa el método System.Management.Automation.Provider.ItemCmdletProvider.ClearItem para soportar llamadas desde el Clear-Item cmdlet. Este método borra el elemento de datos en la ruta especificada.
Este proveedor no implementa este método. Sin embargo, el siguiente código es la implementación predeterminada de este método.
Cosas a recordar sobre la implementación de ClearItem
Las siguientes condiciones pueden aplicarse a una implementación de System.Management.Automation.Provider.ItemCmdletProvider.ClearItem:
Al definir la clase de proveedor, un proveedor de ítems de Windows PowerShell puede declarar capacidades de proveedor de
ExpandWildcards,Filter,Include, oExclude, a partir de la enumeración System.Management.Automation.Provider.ProviderCapabilities . En estos casos, la implementación de System.Management.Automation.Provider.ItemCmdletProvider.ClearItem debe garantizar que la ruta pasada al método cumpla esos requisitos. Para ello, el método debe acceder a la propiedad correspondiente, por ejemplo, las propiedades System.Management.Automation.Provider.CmdletProvider.Exclude y System.Management.Automation.Provider.CmdletProvider.Include properties.Por defecto, las sobrescrituras de este método no deben establecer ni escribir objetos ocultos al usuario a menos que la propiedad System.Management.Automation.Provider.CmdletProvider.Force esté configurada en
true. Se debe enviar un error al método System.Management.Automation.Provider.CmdletProvider.WriteError si la ruta representa un elemento oculto para el usuario y System.Management.Automation.Provider.CmdletProvider.Force está configurado comofalse.Tu implementación del método System.Management.Automation.Provider.ItemCmdletProvider.SetItem debe llamar a System.Management.Automation.Provider.CmdletProvider.ShouldProcess y verificar su valor de retorno antes de realizar cualquier cambio en el almacén de datos. Este método se utiliza para confirmar la ejecución de una operación cuando se realiza un cambio en el almacén de datos, por ejemplo, la eliminación de archivos. El método System.Management.Automation.Provider.CmdletProvider.ShouldProcess envía el nombre del recurso a cambiar al usuario, con el entorno de ejecución de Windows PowerShell, y gestiona cualquier configuración de línea de comandos o variable de preferencia para determinar qué debe mostrarse.
Tras la llamada a System.Management.Automation.Provider.CmdletProvider.ShouldProcess ,
trueel método System.Management.Automation.Provider.ItemCmdletProvider.SetItem debe llamar al método System.Management.Automation.Provider.CmdletProvider.ShouldContinue . Este método envía un mensaje al usuario para permitir retroalimentación que verifique si la operación debe continuar. La llamada a System.Management.Automation.Provider.CmdletProvider.ShouldContinue permite una comprobación adicional para posibles modificaciones peligrosas del sistema.
Recuperar parámetros dinámicos para ClearItem
A veces el Clear-Item cmdlet requiere parámetros adicionales que se especifican dinámicamente en tiempo de ejecución. Para proporcionar estos parámetros dinámicos, el proveedor de ítems de Windows PowerShell debe implementar el método System.Management.Automation.Provider.ItemCmdletProvider.ClearItemDynamicParameters . Este método recupera los parámetros dinámicos del elemento en la ruta indicada y devuelve un objeto que tiene propiedades y campos con atributos de análisis similar a una clase cmdlet o un objeto System.Management.Automation.RuntimeDefinedParameterDictionary . El entorno de ejecución de Windows PowerShell utiliza el objeto devuelto para añadir los parámetros al Clear-Item cmdlet.
Este proveedor de artículos no implementa este método. Sin embargo, el siguiente código es la implementación predeterminada de este método.
Realizar una acción predeterminada para un objeto
Un proveedor de elementos PowerShell de Windows puede implementar el método System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction para soportar llamadas desde el Invoke-Item cmdlet, lo que permite al proveedor realizar una acción predeterminada para el elemento en la ruta especificada. Por ejemplo, el proveedor del Sistema de Archivos podría usar este método para llamar a ShellExecute para un elemento específico.
Este proveedor no implementa este método. Sin embargo, el siguiente código es la implementación predeterminada de este método.
Cosas a recordar sobre la implementación de InvokeDefaultAction
Las siguientes condiciones pueden aplicarse a una implementación de System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction:
Al definir la clase de proveedor, un proveedor de ítems de Windows PowerShell puede declarar capacidades de proveedor de
ExpandWildcards,Filter,Include, oExclude, a partir de la enumeración System.Management.Automation.Provider.ProviderCapabilities . En estos casos, la implementación de System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction debe garantizar que la ruta pasada al método cumpla esos requisitos. Para ello, el método debe acceder a la propiedad correspondiente, por ejemplo, las propiedades System.Management.Automation.Provider.CmdletProvider.Exclude y System.Management.Automation.Provider.CmdletProvider.Include properties.Por defecto, las sobrescrituras de este método no deben establecer ni escribir objetos ocultos al usuario a menos que la propiedad System.Management.Automation.Provider.CmdletProvider.Force esté configurada en
true. Se debe enviar un error al método System.Management.Automation.Provider.CmdletProvider.WriteError si la ruta representa un elemento oculto para el usuario y System.Management.Automation.Provider.CmdletProvider.Force está configurado comofalse.
Recuperar parámetros dinámicos para InvokeDefaultAction
A veces el Invoke-Item cmdlet requiere parámetros adicionales que se especifican dinámicamente en tiempo de ejecución. Para proporcionar estos parámetros dinámicos, el proveedor de elementos de Windows PowerShell debe implementar el método System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultActionDynamicParameters . Este método recupera los parámetros dinámicos del elemento en la ruta indicada y devuelve un objeto que tiene propiedades y campos con atributos de análisis similar a una clase cmdlet o un objeto System.Management.Automation.RuntimeDefinedParameterDictionary . El entorno de ejecución de Windows PowerShell utiliza el objeto devuelto para añadir los parámetros dinámicos al Invoke-Item cmdlet.
Este proveedor de artículos no implementa este método. Sin embargo, el siguiente código es la implementación predeterminada de este método.
Implementación de métodos y clases auxiliares
Este proveedor de ítems implementa varios métodos y clases auxiliares que son utilizados por los métodos públicos de anulación definidos por Windows PowerShell. El código de estos métodos y clases auxiliares se muestra en la sección de Ejemplo de Código .
Método NormalizePath
Este proveedor de ítems implementa un método ayudante NormalizePath para asegurar que el camino tenga un formato consistente. El formato especificado utiliza una barra diagonal (\) como separador.
Método PathIsDrive
Este proveedor de elementos implementa un método asistente PathIsDrive para determinar si la ruta especificada es realmente el nombre de la unidad.
Método ChunkPath
Este proveedor de ítems implementa un método ChunkPath helper que desmenuza la ruta especificada para que el proveedor pueda identificar sus elementos individuales. Devuelve un array compuesto por los elementos del camino.
Método GetTable
Este proveedor de elementos implementa el método GetTables helper que devuelve un objeto DatabaseTableInfo que representa información sobre la tabla especificada en la llamada.
Método GetRow
El método System.Management.Automation.Provider.ItemCmdletProvider.GetItem de este proveedor de ítems llama al método helper GetRows . Este método auxiliar recupera un objeto DatabaseRowInfo que representa información sobre la fila especificada en la tabla.
Clase DatabaseTableInfo
Este proveedor de ítems define una clase DatabaseTableInfo que representa una colección de información en una tabla de datos de la base de datos. Esta clase es similar a la clase System.IO.Directoryinfo .
El proveedor de elementos de ejemplo define un método DatabaseTableInfo.GetTables que devuelve una colección de objetos de información de tabla que definen las tablas de la base de datos. Este método incluye un bloque try/catch para asegurar que cualquier error de base de datos aparezca como una fila con cero entradas.
Clase DatabaseRowInfo
Este proveedor de ítems define la clase auxiliar DatabaseRowInfo que representa una fila en una tabla de la base de datos. Esta clase es similar a la clase System.IO.FileInfo .
El proveedor de ejemplo define un método DatabaseRowInfo.GetRows para devolver una colección de objetos de información de fila para la tabla especificada. Este método incluye un bloqueo try/catch para atrapar excepciones. Cualquier error resultará en que no haya información de fila.
Ejemplo de código
Para ver el código de muestra completo, consulte AccessDbProviderSample03 Code Sample.
Definición de tipos de objetos y formato
Al escribir un proveedor, puede ser necesario añadir miembros a objetos existentes o definir nuevos objetos. Cuando termines, crea un archivo Types que Windows PowerShell pueda usar para identificar los miembros del objeto y un archivo Format que defina cómo se muestra el objeto. Para más información, véase Extensión de tipos de objetos y formato.
Construcción del proveedor PowerShell de Windows
Consulta cómo registrar cmdlets, proveedores y aplicaciones anfitrionas.
Probando el proveedor PowerShell de Windows
Cuando este proveedor de elementos de Windows PowerShell está registrado en Windows PowerShell, solo puedes probar la funcionalidad básica y de unidad del proveedor. Para probar la manipulación de elementos, también debes implementar la funcionalidad de contenedores descrita en Implementing a Container Windows PowerShell Provider.
Consulte también
- Windows PowerShell SDK
- Guía del programador de PowerShell para Windows
- Creación de proveedores PowerShell para Windows
- Diseñando tu proveedor PowerShell para Windows
- Ampliación de los tipos de objetos y formato
- Cómo funciona PowerShell de Windows
- Creación de un proveedor de PowerShell para Windows en contenedor
- Creación de un proveedor de PowerShell para Windows
- Cómo registrar comandantes, proveedores y aplicaciones anfitrionas