Sigo leyendo en todas partes que PowerShell es el camino del futuro. Cuando se lanzó por primera vez, hice un montón de laboratorios virtuales, pero desde entonces todavía no lo he usado en un entorno de producción. Sé que llegará el día en que esté lidiando con los sistemas operativos donde ya está instalado, así que quiero estar listo.
Quiero saber:
- Lo usas
- ¿Cuál ha sido su proceso de 'arranque' para usar PowerShell?
- ¿Qué tipo de tareas de administración del sistema ha programado?
- Soy administrador de la base de datos de SQL Server. ¿Cuáles son algunas cosas interesantes que hacer con él?
Parece que todos están de acuerdo en que Microsoft está presionando tanto, pero en realidad nadie lo está usando todavía. Quiero saber de los administradores de sistemas que lo usan para realizar tareas diarias y compartir algunos ejemplos de código.
windows
windows-server-2008
windows-server-2003
sql-server
powershell
Nick Kavadias
fuente
fuente
Respuestas:
Microsoft está haciendo todo lo posible para que PowerShell sea la elección de los usuarios avanzados y los escritores de automatización en todas partes. Atrás quedaron los días de compilar código en .NET para hacer lo mismo, ahora solo necesita notepad.exe y google. Somos grandes admiradores en la oficina, especialmente porque la Consola de administración de Exchange 2007 NO incluye todo lo que puede hacer en PowerShell. Microsoft falló deliberadamente en implementar cosas que solo se hacen de vez en cuando, más fáciles de desarrollar de esa manera, lo que obliga a su uso si tiene algo parecido a un entorno complejo.
La administración de la nueva generación de productos de Microsoft (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) tiene todos los ganchos de PowerShell muy ricos. Una vez que Remote Powershell (PowerShell 2.0 IIRC) se implemente con Server 2008 R2, será aún MÁS útil para los escritores de automatización.
Lo que hemos hecho con él:
Entonces sí, PowerShell estará con nosotros por bastante tiempo.
EDITAR : Agregar una muestra de código, ya que se solicitó
Esto toma un archivo CSV creado con un script perl y actualiza un conjunto de grupos. Si el grupo ya existe, reemplaza la membresía con la especificada en el archivo. Si el grupo no existe, lo crea. Esta es una sincronización unidireccional. Además, todavía no está en producción, pero está cerca.
fuente
Dado que los productos de servidor de Microsoft estarán habilitados para PowerShell desde el principio (creo que la próxima versión de Exchange tiene toda la configuración disponible a través de PowerShell), y que libros como PowerShell en la práctica describen algunas excelentes maneras de automatizar tareas que de otra manera serían monótonas, creo Es razonable sugerir que PowerShell será una tecnología frecuente en el servidor de Windows por un tiempo todavía.
fuente
Recomiendo el Podcast de Scott Hanselman # 162 . Parece que todos los equipos de servidores de Microsoft están "obligados" a proporcionar cmdlets de PowerShell y también a seguir una sintaxis única y coherente.
Además, terceros como VMWare lo están adoptando
En resumen, creo que PowerShell a partir de 2.0 está seriamente en el negocio de reemplazar archivos por lotes para todas las tareas, excepto las más triviales.
fuente
Diez scripts de PowerShell que uso como administrador de la base de datos de SQL Server (todos se describen / publican en mi blog ):
fuente
¿Qué tipo de tareas de administración has escrito con él?
monitoreo de aplicaciones / servicios: obtenga números de rendimiento clave de EventLog (remoto) y procedimientos almacenados y muéstrelos desde un único archivo por lotes
Soy un DBA de SQL Server, ¿me muestran algunas cosas interesantes que hacer con él?
automssqlbackup : copia de seguridad diaria para MSSQL con rotación (diaria = incremental, semanal + mensual = completa; mantener 5 copias de seguridad diarias, 5 copias semanales), compresión, notificación por correo electrónico
fuente
Después de haber utilizado los scripts de shell de Unix en una carrera anterior, luego pasar a la administración del servidor de Windows, puedo decir que realmente aprecio Powershell: no tengo tiempo ni capacidad para aprender demasiada sintaxis arcana y me sorprendió gratamente que mucho de los scripts de PowerShell se pueden escribir con un lenguaje muy sencillo ... ¡¡toma eso lo que vale ya que estaba acostumbrado a ksh !!
Predigo que estará por mucho tiempo.
fuente
Pensé que esto era genial: con SQL Server 2008 obtienes nuevas extensiones de PowerShell que te permiten navegar por bases de datos SQL al igual que tu sistema de archivos o registro local.
Después de instalar las herramientas de SQL Server Client, puede abrir cualquier base de datos en PowerShell (a través del menú contextual del botón derecho) y jugar con ella de forma orientada a objetos:
Tenga en cuenta que la primera línea simplemente cambia la solicitud para que no sea tan larga.
Con suerte, aparte de eso, es evidente lo que está sucediendo aquí :)
fuente
SQL Server 2008 ahora tiene opciones de contexto de PowerShell en Management Studio, por lo que más que Exchange lo está aceptando. Además, piense en ello como el reemplazo de DOS, ya que eso es más o menos lo que MS estaba pensando, ya que simplemente no pueden mejorar la seguridad de DOS por problemas de compatibilidad con versiones anteriores, por lo que simplemente crearon algo nuevo y wammo, ¡problema resuelto!
fuente
¡Yo también soy un DBA, y un guionista de mucho tiempo, volviendo a los archivos por lotes de DOS, V3.3! Pasó a VB Script pero PS es muy poderoso. Echa un vistazo a - Lo sentimos, no puedo publicar el enlace, ya que soy un nuevo usuario. Obtuve esto del blog de Otto Helweg. Es una herramienta de inventario de software barata y alegre.
Ejemplo de script de PowerShell:
Dave J
fuente
Las siguientes tareas las realiza mi equipo de manera muy regular con PowerShell
Día a día, tengo un aviso de PS todo el tiempo y lo uso para cualquiera de las tareas para las que solía usar CMD.
Aquí hay algunos ejemplos de código para leer las listas de Sharepoint. Uso servicios web de Sharepoint y el nuevo cmdlet "New-WebServiceProxy" en PowerShell V2.0
Oisin Grehan tiene una gran publicación de blog sobre el uso de los servicios web de Sharepoint que utilicé como base para crear todas mis funciones. Incluso tiene un increíble script new-webservice.ps1 que puede usar si todavía usa PowerShell V1.
Además, aquí está la función base que usé para obtener la memoria disponible en los nodos de mi clúster
fuente
Intenté PowerShell para un pequeño proyecto en el trabajo: una migración diaria de un subconjunto de ~ 600 usuarios y ~ 200 grupos desde el AD corporativo a un antiguo sistema UNIX utilizando archivos similares a CSV . Me ofrecieron un script VBScript de 500 líneas (!) Que extrajo un solo grupo y sus usuarios como punto de partida.
Resultó que un script de PowerShell de ~ 20 líneas podría hacer todo ...
Como usuario * NIX (servidor y cliente), me ha sorprendido gratamente con PowerShell. Incluso si solo conoce un pequeño subconjunto de comandos, puede hacer un trabajo realmente poderoso con él. Solo necesito acceso remoto SSH (similar) ...
fuente
¿Cómo no puedo usarlo? Todas las aplicaciones de servidor de Microsoft que salen / se actualizan ahora se administran con Powershell. Luego se proporciona una consola de administración / UI más o menos molesta incorporada en la parte superior de este núcleo, que a menudo es lento y, como alguien señaló, carece de funciones disponibles ... por lo que no puedo decir que tengamos muchas opciones en realidad ^ ^
fuente
Powershell no es perfecto, pero si lo has usado, sabes que es genial. Tener acceso a toda la biblioteca .net más cmdlets integrados (y hacer sus propios cmdlets con PS en 2.0), eso es bastante bueno.
Lo único que creo que falta es un buen IDE para él, que estoy seguro vendrá de MS algún día. En este momento, uso el PowerShell Plus de Idera y el administrador de secuencias de comandos que permiten la depuración y son bastante geniales.
Pude dejar de VB bastante bien.
Mi proyecto más grande hasta la fecha con posh es usar "powershellASP" para crear una página web básica que ejecute comandos de powershell y extraiga información de VM y host vmware de mis más de una docena de hosts VMWare ESXi (gratis) y los muestre en tablas HTML. Hice esto porque con VMWare ESXi gratuito y sin centro virtual, no hay otra forma de obtener una visión general en tiempo real de todas mis máquinas virtuales en la empresa. PowershellASP es un analizador gratuito de terceros escrito para IIS y no es compatible con MS. Por lo tanto, puede hacer algunas cosas limitadas en este momento y la documentación es bastante escasa.
fuente
Tengo un montón de secuencias de comandos de administración / inventario que buscan en AD diferentes cosas y las consultan a través de WMI para obtener estadísticas vitales como recursos compartidos en el servidor, espacio en disco, espacio en disco usado, etc.
Guiones generales:
Guiones de usuario:
Tengo uno que enumera todas las máquinas invitadas VMWare en mis servidores ESX
Tengo un script que toma archivos después de x días y los elimina de forma segura.
Básicamente puedo hacer lo que tomó alrededor de 200 líneas de VBScript y hacerlo en 10 de PowerShell. También puede hacer cosas que simplemente no puede hacer o hacer bien en VBScript, como enviar correos electrónicos con archivos adjuntos, lo que hago regularmente para enviarme los resultados de mis scripts. También puede escribir entradas significativas y únicas en el registro de eventos con nombres de servicio personalizados e ID de eventos.
Eso es lo que puedo pensar fuera de mi cabeza. Mi herramienta de elección es PowerShell ahora, simplemente hace la vida más fácil.
Básicamente es tan útil para un administrador del sistema como las secuencias de comandos Bash para un administrador de Unix.
fuente
Estaba buscando en Poweshell para reemplazar nuestros scripts de lotes de clientes: ejecutar programas, scripts de inicio de sesión, etc.
Pero descubrió que agregaba al menos 10 segundos al tiempo de inicio de sesión, eso es con todos los "ajustes" en su lugar. Así que terminé quedándome con lo que estábamos usando.
fuente
Al no ser un desarrollador de .NET, tengo un uso limitado para todas las cosas relacionadas con .NET que PS te permite usar. Sin embargo, al ser un administrador de Exchange (entre otras cosas), la integración de PowerShell para Exchange 2007 es INCREÍBLE. Finalmente tengo un motor de secuencias de comandos confiable para mi sistema de correo; hasta ahora, me ha enviado estadísticas mensuales sobre los buzones de todos, ajustando a quién se asignan las diferentes direcciones de correo electrónico según la hora del día, creando y asignando automáticamente permisos en carpetas públicas y usuarios de equilibrio de carga entre nuestras dos bases de datos de buzones de correo . La otra cosa interesante desde el punto de vista Ex07 es que después de hacer algo en la GUI, le presenta los comandos de PowerShell relevantes para lo que acaba de hacer. Cópielos y eventualmente tendrá un conjunto de scripts de PS que pueden modificar su entorno de Exchange desde cero.
fuente
Automatizar ciertas cosas con los controles del servidor donde trabajo (recopilar información básica de WMI y recopilar errores y advertencias de los registros de eventos).
Su manejo de los registros de eventos es increíble.
Recientemente escribí un script para deshabilitar la ventana emergente de actualización automática que Foxit Reader ha habilitado de manera predeterminada en un dominio en el que se ejecuta el script. Extrae una lista de computadoras de AD luego las prueba para ver si está funcionando, luego cambia un 1 a un 0.
¡Una cosa que olvidé!
Tiene prácticamente acceso completo a las bibliotecas .NET. Es un poco difícil hacer cosas realmente complicadas con él, pero si tienes la necesidad, está ahí para ti.
fuente
Lo usamos para bastantes tareas administrativas, siendo principalmente una tienda de Microsoft. Algunos scripts son simples, como limpiar archivos viejos o desfragmentar máquinas y registrar los resultados. Un script audita las computadoras utilizando principalmente WMI y registra los resultados en una base de datos. Obtiene cosas como hardware (CPU, RAM, unidades, etc.), información de red, usuarios locales, software instalado e información de perfil. Hay uno que llama a un servicio web para enviar correos electrónicos. Creo que en el futuro reemplazará el resto de los scripts de VBScript que todavía se están utilizando. Todavía no lo estamos usando para tareas de Exchange o SQL Server.
Espero con ansias la próxima versión, que tendrá soporte para trabajos en segundo plano, transacciones, mejor manejo de excepciones, un nuevo ISE (Integrated Scripting Environment), mejor depuración, etc.
fuente
Mis administradores de Windows todavía no usan PowerShell. Todos han oído hablar de él, pero no se han tomado el tiempo para familiarizarse con él.
Decidí echarle un vistazo yo mismo. Viniendo de un fondo de shell de Unix, pensé que Windows finalmente debía tener un entorno de programación de shell real. Creo que Microsoft hizo algunas cosas bien con PowerShell y otras no tan bien.
En el lado bueno está su uso de objetos como intermediario entre cmdlets en PowerShell. Esto brinda un nivel de potencia a PowerShell que las secuencias de comandos basadas en texto tienen que piratear para poder trabajar.
En el lado negativo, realmente no aprovechan gran parte de los comandos de shell de Unix. Por lo tanto, la curva de aprendizaje es innecesariamente empinada y no ayuda a las personas a pasar fácilmente de Unix a PowerShell o viceversa. Lo máximo que hacen es definir alias para algunos de los cmdlets de PowerShell, como ls aliasing Get-ChildItem con todos los modificadores de línea de comandos diferentes.
Solo mis dos centavos ...
fuente
Esta es más una respuesta del desarrollador, pero es del mundo real y comenzaremos a probar esto en algún momento en los próximos meses. Estoy empezando a aprender PowerShell para escribir scripts para llevar las tareas de SQL Server a nuestro entorno de integración continua . Los scripts de integración continua serán ejecutados principalmente por NAnt y MSBuild a través de JetBrains TeamCity .
Además de eso, estoy buscando cambiar a PowerShell como mi shell de comandos principal de Windows para fines generales y especialmente para tareas de administración de bases de datos de SQL Server.
Lo siento, todavía no tengo muestras de código para compartir, ¡porque todavía estoy aprendiendo! Sin embargo, estaré encantado de publicar algunas cuando lo haga :)
Aquí hay una muestra de código de línea única con la que acabo de responder otra pregunta tuya :) Pero bueno, para la wiki ...
Esto enumerará las revisiones instaladas:
fuente
Si bien no es el lenguaje de script más fácil de aprender (se presume una sólida experiencia con tuberías) y tiene su propio apalancamiento de rarezas (¡dame una simple cosita sed !), Encuentro PowerShell bastante poderoso. No hasta el nivel de Bash u otros shells de Unix, pero aún así.
Lo uso para supervisar algunas exportaciones e importaciones de bases de datos con advertencias por correo electrónico en caso de que las cosas salgan mal y hago algunas operaciones por lotes de rutina.
Ciertamente ya es mi shell principal de Windows, aunque en realidad no es el tipo de cosas "escribe menos haz más". PowerShell tiene su verbosidad (y herencia .NET) jugando en su contra.
fuente
La versión 1.0 de PowerShell estaba muy limitada en muchos aspectos, pero la versión 2.0 está funcionando muy bien. En comparación con los scripts por lotes, es mucho más poderoso. Realmente no lo uso como un shell, solo para scripts, por lo que mi experiencia está coloreada en consecuencia. Realmente no me gusta la sintaxis (
-eq
vs==
,-gt
vs>
, etc.), pero agradezco poder ingresar a .NET si necesito hacer algo extraño. Creo que con la versión 3.0 será genial. En este momento lo pondría firmemente en la categoría de "hace el trabajo".Lo uso principalmente para automatizar la implementación del código. Esta es un área donde brilla sobre la creación de algo en C #. Las operaciones relacionadas con el shell, como la copia recursiva de directorios y otras cosas que los scripters de Bash han dado por sentado durante años, hacen las cosas mucho más fáciles.
fuente