2008-08-12 31 views
26

Windows PowerShell salió el año pasado y recibió excelentes críticas de muchos bloggers .net (me viene a la mente el Hanselman). Parecía ser promocionado como una gran utilidad nueva que de alguna manera hizo que todo lo que pudieras hacer en la línea de comando fuera más fácil e integrado con .Net. Sin embargo, cuanto más leo sobre él, más parece ser una herramienta que es genial para los profesionales de TI, y no es muy útil para los desarrolladores.¿Cómo se usa PowerShell?

¿Utiliza PowerShell en su trabajo de desarrollo? ¿Si es así, cómo? ¿Vale la pena aprender?

Nota: Después de ver las respuestas hasta ahora, creo que es válido concluir que PowerShell puede ser muy útil para un desarrollador .Net. Sin embargo, no hay una respuesta más abajo que pueda etiquetar como la respuesta (así que por favor, perdóneme por no hacerlo). Estoy votando cada respuesta que he encontrado útil.

Respuesta

0

Aunque todavía no he aprendido cómo usarlo completamente, soy fanático ya que es compatible con la mayoría (si no con todos) de los comandos de Unix con los que estoy familiarizado para navegar usando una línea de comando. Si tiene experiencia con * nix y está desarrollando en Windows, le recomendaría usarlo simplemente porque solo tendrá que recordar un conjunto de comandos.

Tome lo que digo con un grano de sal, sin embargo. Cuando se trata de construir y compilar, utilizo la funcionalidad de línea de comando.

1

Lo uso muy poco para el trabajo de desarrollo real. Lo he usado para configurar directorios virtuales automáticamente y ejecutar un scipt que configura IIS con la misma configuración en todas nuestras máquinas de desarrollo

0

Lo uso para IT Pro tipo de cosas un poco (para lo cual es brillante), pero no creo que lo haya usado demasiado para el desarrollo, ocasionalmente para probar rápidamente algo como un String.Format. Algo que haré es desarrollar los comandos de PowerShell para algunas de nuestras aplicaciones, para permitir que los administradores realicen tareas como la administración de usuarios a través de PowerShell, pero no creo que esto sea realmente lo que usted quiere decir.

3

Nunca se ha utilizado como parte de mi función de desarrollo, pero de vez en cuando tengo una tarea que escribiría un pequeño programa para automatizar, que ahora me obligo a hacer en powershell y toma menos tiempo .

Por ejemplo, recientemente cambié cientos de miles de archivos de un servidor a otro utilizando xcopy y olvidé establecer el atributo para conservar las fechas de creación en los archivos. Powershell al rescate. En diez minutos, tuve un guión escrito y probado que copiaba las fechas de creación sin tener que volver a copiar los archivos.

+0

wow! puedes mostrarnos el guion? –

1

Personalmente, estoy usando Python para automatizar tareas, usando WMI si es necesario. Creo que esta combinación cubre la mayoría de las necesidades de my.

Probé PowerShell, me parece bien, pero no vale la pena aprender una herramienta completamente nueva. Además de eso, hay excelentes recursos en línea para dominar PowerShell si necesita o quiere (PowerShell Live), o incluso recipes para realizar tareas sin tener que pasar toda la curva de aprendizaje por usted mismo.

12

Definitivamente vale la pena aprender. ¿Alguna vez convierte texto? ¿Alguna vez manipulas XML? ¿Alguna vez automatizaste algo? Ejemplo simple Alguien le proporciona un archivo delimitado por comas y necesita extraer algunos campos para importarlo a otra herramienta/base de datos o crear una lista para su programa.

Si el csv tiene los nombres de campo en la primera línea del archivo, puede hacer lo siguiente en Powershell:

$Data = import-csv "something.csv" 

continuación, puede hacer referencia a sus datos usando los nombres de los campos. Si tuviera un campo llamado SSN, podría decir $ Data [n] .SSN. También puede conectar el comando import-csv a algo que procesa los datos, incluida la exportación como XML/html o lo que desee con solo unos pocos comandos. Powershell está lleno de cosas como esta.

Es una herramienta que le brinda un tremendo acceso a un montón de cosas en su estación de trabajo y servidores, incluida la biblioteca .NET completa. Es una herramienta que no está dirigida a un tipo de persona. Quizás es solo que los tipos de Admin se han dado cuenta rápidamente de lo útil que es. Lo uso todos los dias.

Para responder realmente a la pregunta, la utilizo para automatizar las cosas que hago todos los días. Intento convertirlo en mi único lenguaje de scripting, reemplazando las cosas que hice en perl, python, vbscript, .bat/.cmd y uno de los pocos programas de utilidad/conversión que crearía.

5

Acabo de terminar recientemente la versión 1 de un proyecto que alojó un tiempo de ejecución de PowerShell para ejecutar tareas en sistemas remotos. No estoy de acuerdo sinceramente con que PowerShell no sea una herramienta de desarrollo.

Como un producto basado en .NET, es un análogo directo a la programación de .NET. Los programas enteros de .NET se pueden crear prototipos en PS, así como los pequeños oneliner para probar la funcionalidad de los métodos ... etc. Que los arquitectos del lenguaje para PS diseñaron específicamente la sintaxis de PS para que sea cercana a C#, significa que hay muy poco cambio de contexto cuando escribo scripts PS y código C# (algo que tuve que hacer mucho recientemente). Está aprovechando su conocimiento ya ganado con los lenguajes .NET, usando PS.

Como una herramienta de automatización, es excelente. Tiene acceso a WMI, ADO, ADSI, .NET, COM nativamente, y además puede soldarse por puntos para funcionar con cualquier otra cosa. Esto solo hace que cualquier automatización de Windows sea más fácil y más potente. La cantidad de acceso al sistema es detenida por algunos otros lenguajes (VBscript, Python) pero la facilidad de uso del lenguaje y el beneficio del framework .NET significa que algunos scripts PS están vinculando el código existente (reutilización del código) en lugar de perdiendo el tiempo escribiendo otra rutina de compresión de archivos (por ejemplo ...)

Ya hay proyectos por ahí que están haciendo herramientas de construcción (psake viene a la mente) para facilitar la vida del desarrollador. Los proyectos como las extensiones de comunidad de Powershell muestran las potentes capacidades de extensión que los desarrolladores normales de todos los días pueden lograr. Estoy de acuerdo con algunos de los carteles anteriores, considero que se ha hecho algo para configurar entornos de compilación o trabajar con datos para tareas de desarrollo, se puede hacer con PS, si no más rápido/más fácil/mejor, pero igual de bien.

James

0

Me parece que WPS es una manera de hacer la vida más fácil hacer las cosas que necesita. No creo que vaya a encontrar WPS integrado en decir Firefox o Quicken, pero esos equipos pueden usarlo para hacer esas cosas ... en resumen, "WPS no hace que su programa, WPS hace que su programa sea más fácil". ; o)

12

Soy un administrador de oficio y estoy empezando en el mundo de "Dev", pero veo que PowerShell puede ser muy útil para los desarrolladores de varias maneras.

  1. la automatización de tareas -> Lee Holmes (un desarrollador en el equipo de PowerShell) anotó una prueba de concepto llamado BgShell, que era básicamente el tiempo de ejecución de PowerShell alojado en una ventana de forma aplicación que escuchó durante las pulsaciones del teclado y dio inicio a las acciones escrito en PowerShell en base a ellos. También incluyó una cierta automatización del portapapeles.
  2. Acceso rápido al .NET framework. No es necesario que compile y ejecute algo o use otro programa como el Compilador de fragmentos para probar algunas funcionalidades. Cargue el ensamblaje en su sesión de PowerShell e interactúe con él. Obtienes toda la capacidad de descubrimiento de PowerShell (como Get-Member) para explorar tu objeto.
  3. Lenguajes específicos del dominio fáciles de compilar. James Kovacs escribió un lenguaje de script de compilación simple con PowerShell llamado Psake.
  4. Puede proporcionar un lenguaje de scripting para su aplicación. Dado que PowerShell es parte de los 09 Criterios de ingeniería comunes, muchas aplicaciones de Microsoft tendrán interfaces para PowerShell, y la familiaridad con la sintaxis del lenguaje crecerá. Puede aprovechar ese conocimiento integrando el tiempo de ejecución de PowerShell en su aplicación y proporcionando una interfaz de scripting a sus usuarios, eligiendo a qué objetos tendrán acceso.
  5. En la misma línea, si necesita crear una interfaz de línea de comandos para su aplicación, PowerShell proporciona una gran parte de la plomería subyacente necesaria para analizar argumentos y otras tareas básicas, dejando solo la lógica comercial para que pueda escribir y proporcionar una interfaz coherente con otras aplicaciones (por ejemplo, si tiene cuentas de usuario que necesitan ser administradas (que aún no se integran con Active Directory, un administrador podría (usando los Quest AD de Quest y su interfaz de aplicaciones) Obtener QADUser | New-MyApplicationUser y listo. El equipo de Exchange 2007 hizo esto muy bien. Toda la funcionalidad se basa en los cmdlets de PowerShell, la GUI llama a los cmdlets y muestra al usuario lo que se está ejecutando, para que puedan crear scripts basados ​​en eso
  6. ¡Es genial! En ​​aproximadamente 250 líneas (incluidos los comentarios), Rob Foust y Jeff Hicks escribió un sniffer de red en PowerShell. Más fácil de usar que WinDump para la resolución de problemas ligera.
  7. Comunidad: hay una gran comunidad centrada en PowerShell, incluidos los desarrolladores. Obtenga más información en PowerShellCommunity.org.
2

@EdSwangren - Si tiene que trabajar principalmente en una plataforma de Windows y trabajar en el espacio .NET, recomiendo sinceramente dedicar tiempo a aprender sobre PowerShell. Puede aprovechar su experiencia y código .NET existente, funciona con COM, WMI y ADSI. Le permite acceder a casi todo en la plataforma de Windows (y eso es solo V1). V2 está en desarrollo activo (CTP2 está disponible ahora) e incluirá más comunicación remota, enrutamiento STA y muchas otras mejoras.

Muchos proveedores también son compatibles con PowerShell: desde/n Software que proporciona cmdlets de red, hasta Citrix y VMWare que proporcionan api de administración a través de PowerShell.

6

Puede odiar a Powershell, y aun así puede serle increíblemente útil. Lo uso para pequeños pero importantes tipos de cosas de una línea o en guiones muy pequeños. Realmente no se puede comparar con C# así que tan pronto como haya alguna complejidad o reutilización de potencial significativo en absoluto, cambio a C#. Además, lo importante es que Powershell es tan funky que QUIERO recrear soluciones desde cero cada vez, de lo contrario me olvido de las peculiaridades, de las cuales hay muchas. ¡He escuchado a otras personas decir esto también!

ejemplos de lo que es realmente bueno para:

  1. ad hoc de procesamiento de texto. Ocasionalmente, la gente me entrega un gran archivo de datos o SQL, y quieren que se manipule en una forma diferente, a veces de maneras realmente complicadas. Esto solo me ha ahorrado una increíble cantidad de tiempo. A menudo involucra muchos adhoc one-liners y archivos intermedios. Ahora que la gente sabe que puedo hacer esto, tienden a entregarme esos proyectos. O en algunos casos están tan impresionados que aprenden Powershell por sí mismos.

  2. Cuando estoy en el sitio de un cliente y necesito desesperadamente automatizar algo, y es la única herramienta que puedo y/o tengo acceso a mis manos.

  3. Pequeñas secuencias de comandos para iniciar sesión en sitios web y navegar a la página que me interese o en la que esté trabajando. Nunca me registro manualmente en un sitio web que estoy desarrollando. Trivial, pero esa es una tarea cerebral repetitiva menos molesta de la que tengo que preocuparme.

  4. Sobres de una línea para copiar archivos y proyectos y buscar y reemplazar.

  5. Pequeñas secuencias de comandos para compilar, si hay complicaciones inusuales.

  6. Etc. Usted debe tener pequeños caprichos en su sistema, donde debe detener/iniciar un servicio para arreglar algo más, o lo que sea.

0

Lo uso para automatizar todo lo que pueda. Un ejemplo es Web UI Automation, para facilitar el desarrollo/prueba de aplicaciones.

también lo uso para generar archivos de entrada aleatorios para varios programas. Por ejemplo, una aplicación está esperando un archivo XML, y tengo un script para compilar ese archivo con valores aleatorios y una identificación única basada en la hora actual.

No lo uso mucho, pero lo uso todos los días.

0

Utilizo PoSH para cualquier trabajo 'repetitivo' que tengo que hacer para administrar redes, dominios, computadoras, usuarios de AD, edición de texto, búsqueda de archivos, migraciones de servidores de archivos, monitoreo y también ¡diviértase!

0

lo uso para el inicio de múltiples procesos. y por algo que cmd no puede hacer.