2010-09-01 14 views

Respuesta

4

PowerShell puede hacer muchas cosas que una aplicación de consola .NET puede hacer, pero sigue siendo un lenguaje de scripting. Pero es muchísimo mejor que el lenguaje de archivo por lotes o VBScript/JScript. Sus puntos fuertes incluyen poder usar tuberías y filtros similares a UNIX pero con objetos en lugar de texto estúpido. También puede crear objetos CLR y COM e invocar sus propiedades y métodos.

Sin embargo, si está escribiendo algo complejo, sería mejor que escriba un programa compilado para que tenga los beneficios de encontrar errores en tiempo de compilación y tener un IDE mejor. Además, si desea ejecutar un script de PowerShell, PowerShell debe estar instalado en la computadora donde lo está ejecutando.

+0

Así que no debería realmente ser comparándolo con aplicaciones .NET, pero a archivos por lotes y VBScript? –

+0

Correcto, aunque también es una buena alternativa a las aplicaciones de consola .NET realmente simples y de vida corta (como, por ejemplo, una que hace simples manipulaciones de archivos). – Jacob

10

PowerShell es un shell interactivo como KornShell, Bash y er CMD.exe. Y al igual que esas shells, admite un lenguaje de scripting (KSH, Bash, Batch). Sin embargo, PowerShell está construido sobre .NET y expone tipos de .NET y le permite crear y manipular muchos tipos de .NET. Entonces puede usar PowerShell para compilar scripts que puedan hacer lo que una aplicación de consola típica de .NET podría hacer.

Uno de los factores a tener en cuenta cuando se escriben pequeñas aplicaciones de consola de utilty es cuánto esfuerzo gasta al escribir el código de uso & frente al código requerido para lograr el propósito fundamental del exe. He cambiado a escribir muchas utilidades como scripts de PowerShell porque PowerShell proporciona un motor de análisis de parámetros con muchas características agradables: parámetros nombrados/posicionales, parámetros requeridos/opcionales, valores predeterminados para parámetros, especificación parcial de nombres de parámetros, etc.

PowerShell 2.0 agrega aún más funciones en esta área (atributos de validación, etc.) con funciones avanzadas. Puede escribir fácilmente "páginas man" como comentarios para sus scripts o funciones avanzadas. Mientras solía pasar el 50-80% de mi tiempo jugando con el código de análisis de parámetros escamoso, no estándar (¿es eso o ambos?) En una aplicación de consola C#, dejé que PowerShell manejara eso para mí. Sin embargo, creo que Jacob está en lo cierto al decir que las tareas complejas que requieren un código .NET de bajo nivel serían más fáciles de corregir (verificaciones de tiempo de compilación estáticas) y depurar en C#/VB/Visual Studio.

Me encantaría ver la funcionalidad de análisis de parámetros de PowerShell expuesta a través de un conjunto de tipos de .NET en el BCL de modo que pueda escribir una aplicación de consola y obtener la funcionalidad de análisis de PowerShell. Hace mucho tiempo utilicé un componente de código abierto llamado Genghis, pero creo que ha sido agregado. En un momento durante los betas de .NET 4.0, apareció un analizador de línea de comandos en el marco, pero se eliminó antes de RTM. No creo que este analizador de línea de comandos tuviera ninguna conexión con PowerShell, y debería tener IMO. Así que probablemente fue algo bueno que fue retirado.

2

La fuerza de Powershell es la simplicidad e interoperabilidad específicamente con los productos de Microsoft. Por ejemplo, dentro de Exchange 2007 y 2010, no hay forma de modificar algunos atributos sin usar Powershell. No hasta SP2, incluso podría administrar carpetas públicas en Exchange 2007.

En segundo lugar, me encanta cómo todo en PoSh es un objeto. Cosas como la lectura en un archivo CSV son tan simples como

$csv = import-csv c:\MyUsers.csv 

Ahora tiene un objeto indexado, con cada columna accesible por Es cabeza de la columna. No es algo fácil de lograr en muchos otros idiomas, afaik.

$csv[1].UserName

Cuestiones relacionadas