Guía del programador de Windows PowerShell'Windows PowerShell Programmer's Guide

Esta guía del programador está dirigida a los desarrolladores interesados en proporcionar un entorno de administración de línea de comandos para los administradores del sistema.This programmer's guide is targeted at developers who are interested in providing a command-line management environment for system administrators. Windows PowerShell proporciona una manera sencilla de crear comandos de administración que exponen objetos de .NET, a la vez que permite que Windows PowerShell realice la mayor parte del trabajo.Windows PowerShell provides a simple way for you to build management commands that expose .NET objects, while allowing Windows PowerShell to do most of the work for you.

En el desarrollo de comandos tradicional, es necesario escribir un analizador de parámetros, un enlazador de parámetros, filtros y todas las demás funciones expuestas por cada comando.In traditional command development, you are required to write a parameter parser, a parameter binder, filters, and all other functionality exposed by each command. Windows PowerShell proporciona lo siguiente para facilitar la escritura de comandos:Windows PowerShell provides the following to make it easy for you to write commands:

  • Un eficaz entorno de ejecución de Windows PowerShell (motor de ejecución) con su propio analizador y un mecanismo para enlazar automáticamente los parámetros de comando.A powerful Windows PowerShell runtime (execution engine) with its own parser and a mechanism for automatically binding command parameters.

  • Utilidades para dar formato y mostrar los resultados del comando mediante un intérprete de línea de comandos (CLI).Utilities for formatting and displaying command results using a command line interpreter (CLI).

  • Compatibilidad con altos niveles de funcionalidad (a través de proveedores de Windows PowerShell) que facilitan el acceso a los datos almacenados.Support for high levels of functionality (through Windows PowerShell providers) that make it easy to access stored data.

    Con un costo reducido, puede representar un objeto .NET mediante un comando enriquecido o un conjunto de comandos que le ofrecerán una experiencia de línea de comandos completa para el administrador.At little cost, you can represent a .NET object by a rich command or set of commands that will offer a complete command-line experience to the administrator.

    En la siguiente sección se tratan los conceptos y términos clave de Windows PowerShell.The next section covers the key Windows PowerShell concepts and terms. Familiarícese con estos conceptos y términos antes de empezar el desarrollo.Familiarize yourself with these concepts and terms before starting development.

Acerca de Windows PowerShellAbout Windows PowerShell

Windows PowerShell define varios tipos de comandos que puede usar en el desarrollo.Windows PowerShell defines several types of commands that you can use in development. Estos comandos incluyen: funciones, filtros, scripts, alias y archivos ejecutables (aplicaciones).These commands include: functions, filters, scripts, aliases, and executables (applications). El tipo de comando principal descrito en esta guía es un sencillo comando pequeño denominado "cmdlet".The main command type discussed in this guide is a simple, small command called a "cmdlet". Windows PowerShell proporciona un conjunto de cmdlets y admite totalmente la personalización de cmdlets para adaptarse a su entorno.Windows PowerShell furnishes a set of cmdlets and fully supports cmdlet customization to suit your environment. El tiempo de ejecución de Windows PowerShell procesa todos los tipos de comandos de la misma forma que los cmdlets, mediante canalizaciones.The Windows PowerShell runtime processes all command types just as it does cmdlets, using pipelines.

Además de los comandos, Windows PowerShell admite varios proveedores de Windows PowerShell personalizables que hacen que haya conjuntos específicos de cmdlets disponibles.In addition to commands, Windows PowerShell supports various customizable Windows PowerShell providers that make available specific sets of cmdlets. El shell funciona dentro de la aplicación host proporcionada por Windows PowerShell (Windows PowerShell.exe), pero es igualmente accesible desde una aplicación host personalizada que se puede desarrollar para cumplir requisitos específicos.The shell operates within the Windows PowerShell-provided host application (Windows PowerShell.exe), but it is equally accessible from a custom host application that you can develop to meet specific requirements. Para obtener más información, consulte funcionamiento de Windows PowerShell.For more information, see How Windows PowerShell Works.

Cmdlets de Windows PowerShellWindows PowerShell Cmdlets

Un cmdlet es un comando ligero que se usa en el entorno de Windows PowerShell.A cmdlet is a lightweight command that is used in the Windows PowerShell environment. El tiempo de ejecución de Windows PowerShell invoca estos cmdlets en el contexto de los scripts de automatización que se proporcionan en la línea de comandos, y el tiempo de ejecución de Windows PowerShell también los invoca mediante programación a través de las API de Windows PowerShell.The Windows PowerShell runtime invokes these cmdlets within the context of automation scripts that are provided at the command line, and the Windows PowerShell runtime also invokes them programmatically through Windows PowerShell APIs.

Para obtener más información sobre los cmdlets, consulte escribir un cmdlet de Windows PowerShell.For more information about cmdlets, see Writing a Windows PowerShell Cmdlet.

Proveedores de Windows PowerShellWindows PowerShell Providers

En la realización de tareas administrativas, es posible que el usuario tenga que examinar los datos almacenados en un almacén de datos (por ejemplo, el sistema de archivos, el registro de Windows o un almacén de certificados).In performing administrative tasks, the user may need to examine data stored in a data store (for example, the file system, the Windows Registry, or a certificate store). Para facilitar estas operaciones, Windows PowerShell define un módulo denominado proveedor de Windows PowerShell que se puede usar para tener acceso a un almacén de datos específico, como el registro de Windows.To make these operations easier, Windows PowerShell defines a module called a Windows PowerShell provider that can be used to access a specific data store, such as the Windows Registry. Cada proveedor admite un conjunto de cmdlets relacionados para proporcionar al usuario una vista simétrica de los datos del almacén.Each provider supports a set of related cmdlets to give the user a symmetrical view of the data in the store.

Windows PowerShell proporciona varios proveedores predeterminados de Windows PowerShell.Windows PowerShell provides several default Windows PowerShell providers. Por ejemplo, el proveedor del registro admite la navegación y la manipulación del registro de Windows.For example, the Registry provider supports navigation and manipulation of the Windows Registry. Las claves del registro se representan como elementos y los valores del registro se tratan como propiedades.Registry keys are represented as items, and registry values are treated as properties.

Si expone un almacén de datos al que el usuario necesitará acceder, es posible que tenga que escribir su propio proveedor de Windows PowerShell, tal como se describe en creación de proveedores de Windows PowerShell.If you expose a data store that the user will need to access, you might need to write your own Windows PowerShell provider, as described in Creating Windows PowerShell Providers. Para más información aboutWindows los proveedores de PowerShell, consulte Cómo funciona Windows PowerShell.For more information aboutWindows PowerShell providers, see How Windows PowerShell Works.

Aplicación de host Host Application

Windows PowerShell incluye la aplicación host predeterminada powershell.exe, que es una aplicación de consola que interactúa con el usuario y hospeda el tiempo de ejecución de Windows PowerShell mediante una ventana de consola.Windows PowerShell includes the default host application powershell.exe, which is a console application that interacts with the user and hosts the Windows PowerShell runtime using a console window.

En raras ocasiones, tendrá que escribir su propia aplicación host para Windows PowerShell, aunque se admite la personalización.Only rarely will you need to write your own host application for Windows PowerShell, although customization is supported. Un caso en el que podría necesitar su propia aplicación es cuando tiene un requisito para una interfaz de GUI que es más enriquecida que la interfaz proporcionada por la aplicación host predeterminada.One case in which you might need your own application is when you have a requirement for a GUI interface that is richer than the interface provided by the default host application. También puede que desee una aplicación personalizada cuando esté basando su GUI en la línea de comandos.You might also want a custom application when you are basing your GUI on the command line. Para obtener más información, vea Cómo crear una aplicación host de Windows PowerShell.For more information, see How to Create a Windows PowerShell Host Application.

Tiempo de ejecución de Windows PowerShellWindows PowerShell Runtime

El tiempo de ejecución de Windows PowerShell es el motor de ejecución que implementa el procesamiento de comandos.The Windows PowerShell runtime is the execution engine that implements command processing. Incluye las clases que proporcionan la interfaz entre la aplicación host y los comandos y proveedores de Windows PowerShell.It includes the classes that provide the interface between the host application and Windows PowerShell commands and providers. El tiempo de ejecución de Windows PowerShell se implementa como un objeto de espacio de ejecución para la sesión actual de Windows PowerShell, que es el entorno operativo en el que se ejecutan el Shell y los comandos.The Windows PowerShell runtime is implemented as a runspace object for the current Windows PowerShell session, which is the operational environment in which the shell and the commands execute. Para obtener detalles operativos, consulte funcionamiento de Windows PowerShell.For operational details, see How Windows PowerShell Works.

Lenguaje de Windows PowerShellWindows PowerShell Language

El lenguaje de Windows PowerShell proporciona funciones de scripting y mecanismos para invocar comandos.The Windows PowerShell language provides scripting functions and mechanisms to invoke commands. Para obtener información de scripting completa, vea la referencia del lenguaje de Windows PowerShell que se incluye con Windows PowerShell.For complete scripting information, see the Windows PowerShell Language Reference shipped with Windows PowerShell.

Sistema de tipos extendido (ETS)Extended Type System (ETS)

Windows PowerShell proporciona acceso a una variedad de objetos diferentes, como objetos .NET y XML.Windows PowerShell provides access to a variety of different objects, such as .NET and XML objects. Como consecuencia, para presentar una abstracción común para todos los tipos de objeto, el shell utiliza su sistema de tipos extendido (ETS).As a consequence, to present a common abstraction for all object types the shell uses its extended type system (ETS). La mayoría de la funcionalidad de ETS es transparente para el usuario, pero el script o el desarrollador de .NET la usa para los siguientes fines:Most ETS functionality is transparent to the user, but the script or .NET developer uses it for the following purposes:

  • Ver un subconjunto de los miembros de objetos específicos.Viewing a subset of the members of specific objects. Windows PowerShell proporciona una vista "adaptada" de varios tipos de objetos específicos.Windows PowerShell provides an "adapted" view of several specific object types.

  • Agregar miembros a objetos existentes.Adding members to existing objects.

  • Acceso a objetos serializados.Access to serialized objects.

  • Escribir objetos personalizados.Writing customized objects.

    Con ETS, puede crear nuevos "tipos" flexibles que son compatibles con el lenguaje de Windows PowerShell.Using ETS, you can create flexible new "types" that are compatible with the Windows PowerShell language. Si es un desarrollador de .NET, puede trabajar con objetos con la misma semántica que el lenguaje de Windows PowerShell que se aplica a los scripts, por ejemplo, para determinar si un objeto se evalúa como true .If you are a .NET developer, you are able to work with objects using the same semantics as the Windows PowerShell language applies to scripting, for example, to determine if an object evaluates to true.

    Para obtener más información sobre ETS y cómo Windows PowerShell usa los objetos, vea conceptos de objetos de Windows PowerShell.For more information about ETS and how Windows PowerShell uses objects, see Windows PowerShell Object Concepts.

Programación para Windows PowerShellProgramming for Windows PowerShell

Windows PowerShell define su código para los comandos, proveedores y otros módulos de programa mediante el .NET Framework.Windows PowerShell defines its code for commands, providers, and other program modules using the .NET Framework. No está limitado al uso de Microsoft Visual Studio en la creación de módulos personalizados para Windows PowerShell, aunque se sabe que los ejemplos proporcionados en esta guía se ejecutan en esta herramienta.You are not confined to the use of Microsoft Visual Studio in creating customized modules for Windows PowerShell, although the samples provided in this guide are known to run in this tool. Puede usar cualquier lenguaje .NET que admita la herencia de clases y el uso de atributos.You can use any .NET language that supports class inheritance and the use of attributes. En algunos casos, las API de Windows PowerShell requieren que el lenguaje de programación pueda acceder a los tipos genéricos.In some cases, Windows PowerShell APIs require the programming language to be able to access generic types.

Referencia del programadorProgrammer's Reference

Como referencia al desarrollar para Windows PowerShell, vea el SDK de Windows PowerShell.For reference when developing for Windows PowerShell, see the Windows PowerShell SDK.

Introducción con Windows PowerShellGetting Started Using Windows PowerShell

Para obtener más información sobre cómo empezar a usar el shell de Windows PowerShell, consulte la Introducción con Windows PowerShell incluido con Windows PowerShell.For more information about starting to use the Windows PowerShell shell, see the Getting Started with Windows PowerShell shipped with Windows PowerShell. También se proporciona un documento de triple doblado de referencia rápida como un manual para el uso de cmdlets.A Quick Reference tri-fold document is also supplied as a primer for cmdlet use.

Contenido de esta guíaContents of This Guide

TemaTopic DefiniciónDefinition
Cómo crear un proveedor de Windows PowerShellHow to Create a Windows PowerShell Provider En esta sección se describe cómo crear un proveedor de Windows PowerShell para Windows PowerShell.This section describes how to build a Windows PowerShell provider for Windows PowerShell.
Cómo crear una aplicación host de Windows PowerShellHow to Create a Windows PowerShell Host Application En esta sección se describe cómo escribir una aplicación host que manipula un espacio de ejecución y cómo escribir una aplicación host que implementa su propio host personalizado.This section describes how to write a host application that manipulates a runspace and how to write a host application that implements its own custom host.
Cómo crear un complemento de Windows PowerShellHow to Create a Windows PowerShell Snap-in En esta sección se describe cómo crear un complemento que se usa para registrar todos los cmdlets y proveedores en un ensamblado y cómo crear un complemento personalizado.This section describes how to create a snap-in that is used to register all cmdlets and providers in an assembly and how to create a custom snap-in.
Cómo crear un shell de la consolaHow to Create a Console Shell En esta sección se describe cómo crear un shell de consola que no es extensible.This section describes how to create a console shell that is not extensible.
Conceptos de Windows PowerShellWindows PowerShell Concepts Esta sección contiene información conceptual que le ayudará a entender Windows PowerShell desde el punto de vista de un desarrollador.This section contains conceptual information that will help you understand Windows PowerShell from the viewpoint of a developer.

Consulte tambiénSee Also

Windows PowerShell SDKWindows PowerShell SDK