dcalbimonte
Usuario (Bolivia)

<t:sharer data-url="http://elpaladintecnologico.blogspot.com/" data-layout="big_new"></t:sharer>Al terminar de leer este artículo, el lector será capaz de: * Instalar el powershell * El hola mundo * Usar variables en powershell * Ver lista de drives * Manejar registros con powershell * Usar ayuda * Obtener una lista de todos los comandos de powershell * Manejar procesos * Detener, prender servicios * Generar alias (nombres alternativos a los comandos). * Ejecutar y habilitar scrips ps1 en powershell * Ejecutar un script de powershell con doble click. * Para generar eventos en el visor de sucesos con powershell * Trabajar con ciclos foreach * Manejo de varios servidores simulataneamente con PS * Powershell para SQL Server * Opciones avanzadas de powershell para SQL ServerMuchos me preguntan. Y ahora que es este powershell ?. Es un cmd más potente ?. Me dicen que es un poderoso entorno de programación, pero parece ser una consola de comandos rústica. Me sirve ?. En que me va afectar a mi que estoy con mi Windows 2003 o en que mejoraría mi vida si cambio al Windows 2008 ?.Para los que hemos trabajado con UNIX y Linux nos parecía obvia la llegada de un lenguaje similar a PERL. Es decir, un lenguaje potente para manejar variables, ciclos, etc, etc.Actualmente el cmd era muy limitado para la programación. El Visual Script surgió como una alternativa para automatizar tareas, pero es relativamente lento y se necesitan muchas líneas de código para tareas sencillas que en otros lenguajes como PERL se harían mas fácilmente.No se asusten los que no saben nada de PERL. Voy a resumir lo que hace powershell. Powershell permite automatizar tareas de administración de servidores de una manera rápida, sencilla y eficiente.Por ejemplo, se puede navegar y cambiar el registro fácilmente, apagar servicios, manejar listas, etc.Para gente que le gusta UNIX/Linux esto les va a hacer gustar más del sistema operativo Windows. Trata de hacer que se pueda navegar a registros, procesos. Lo vuelve al Windows mucho más fácil de manipular mediante comandos.Si usted usa scripts para automatizar tareas de Windows aprender powershell será de gran utilidad. Si usted es un usuario simple y rupestre que nunca programó nada de tareas (ni lo piensa hacer), powershell es una porquería que no tiene ninguna utilidad.Instalación.El Windows 2008 y el SQL Server 2008 vienen con el powershell incorporado. También se lo puede bajar de la página oficial de Microsoft.http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspxTal vez necesiten bajarse el .net framework 2 o superior que en síntesis son librerías requeridas.http://www.microsoft.com/downloads/details.aspx?familyid=0856eacb-4362-4b0d-8edd-aab15c5e04f5&displaylang=enComenzando mis primeros comandos.Una vez instalado, puede comenzar a jugar con el programa.Voy a mostrar cómo crear alias de comandos (poner mi propio nombre a los comandos). Por defecto ya hay varios aliases. Por ejemplo yo use en vez del comando get-help para tener ayuda el comando man y también se puede usar el comando help. Entonces uno puede cambiar el nombre a sus comandos y crear nuevos ¡!.Posteriormente mostrare como crear registros, apagar servicios, procesos.Como hacer hola mundoPS C:> echo ¨hola mundo¨Como hacer usar variables en powershellPS C:>$var=hola mundoPS C:>echo $varComo obtener la ayuda de un comando (ejemplo dir)Existen tres manerasPS C:>get-help dirPS C:>man dirPS C:>help dirPara obtener una lista de todos los comandos powershellPS C:>get-help *Para obtener ayuda y ejemplos de todos los comandos powershellhttp://technet.microsoft.com/en-us/library/dd347701.aspxMostrar los drives del sistemaGet-PSDrive.Este comando permite mostrar todos los drives. En esta sección la novedad es que podemos navegar en el registro de Windows.>Uso del aliasPara cambiar de nombre a diferentes comandos: Powershell utiliza lo que llamamos alias. Un alias es un sobrenombre que le podemos poner al comando. Por ejemplo:PS C:> set-alias get-drive get-psdriveEsto transforma al comando get-psdrive a get-drive. De ahora en adelante si corremos el comando:PS C:> get-driveDrives realizará la misma función del comando get-psdrive. Parece lindo no ?. Estaba emocionado hasta que me di cuenta que al cerrar el powershell (con exit) y al abrirlo de nuevo ya no funcionaba mi nuevo comando.La forma más fácil de solucionar esto es usando el profile. En el profile se escribe el comando y listo. Sin embargo si no tenemos profile hay que crearlo y agregar nuestro set-alias get-drive get-psdrive.Para ver si existe el profile:PS C:> test-path $profileSi sale false hay que crearlo con:PS C:> New-Item -Path $Profile -ItemType file –ForceLuego editamos el profile:PS C:> Notepad $profileAhora en el archivo notepad colocamos esto:set-alias get-drive get-psdriveFinalmente, salvamos el archivo y cerramos y abrimos el powershell>REGISTROS· Para navegar en el registro se pone:PS C:> cd hklm:Para regresar al drive c y dejar de navegar en el registro:· PS C:> c:Para limpiar la pantalla en powershell· PS C:> cls· Para ver ir al registro hkey local machinePS C:> cd hklm:· Para ir al registro softwareclientsCalendarMicrosoft Outlookprotocols· PS HKLM:> cd softwareclientsCalendarMicrosoft*ProtocolsAlgo que no me agrada es que no funciona el cd.. para volver atrás tiene que ser cd .. (con el espacio como en UNIX/LINUX)Para crear un registro:· PS HKLM:softwareclientsCalendarMicrosoft OutlookProtocols>mkdir reg_nuevoPara volver a la raíz en powershell:PS HKLM:softwareclientsCalendarMicrosoft OutlookProtocols>cd /Para listar los registros dentro de registros (existen varias formas. Get-ChildItem, ls, dir,gci. Las 4 dan los mismos resultados).PS HKLM:>Get-ChildItemPS HKLM:>lsPS HKLM:>gciPS HKLM:>dirPara volver al disco cPS HKLM:> c:PROCESOSPara mostrar una lista de procesos:PS C:> Get-ProcessPara detener un proceso:PS C:> Stop-Process -processname Para listar servicios:>ServiciosPS C:>Get-servicePara iniciar un servicio:PS C:>start-service [service_name]Para detener un servicio:PS C:>stop-service [service_name]EJECUCION DE SCRIPTSPara ejecutar y habilitar un script en powershellPrimero cree un archivo que se llame prueba.ps1 con el siguiente contenido:/*Este programa muestra el mensaje hola mundo*/Echo “hola mundo”Por defecto le va a salir un mensaje de error cuando trate de ejecutarlo:PS C:> ./prueba.ps1Para habilitar la ejecución de scripts y que no salga un mensaje de error:PS C:> set-executionpolicy unrestrictedUna vez habilitado, la ejecución en powershell funciona:PS C:> ./prueba.ps1Para ejecutar un archivo de powershell ps1 con doble click.Este es un poquito más difícil de lo que pensé.Los archivos de powershell (Ps1) no funcionan con doble click así que hay que invocarlo desde el cmd.Esto por razones de seguridad .Paso 1.Tener un archivo con extensión ps1. Mi archivo se va a llamar creardir.ps1. Este ejemplo crea un directorio que se llama Daniel.Archivo: creardir.ps1Contenido: mkdir DanielPaso 2. Crear un archivo con extensión cmd que llame al archivo creardir.ps1.Archivo: createdir.cmdContenido: powershell.exe -command .creardir.ps1Lo único que queda es hacer doble click en el cmd.Para crear un evento en el visor de eventos:PS Cocuments and Settingsuser> EVENTCREATE /T ERROR /ID 1000 /L APPLICATION /D "Test Error"Este mensaje le permitirá generar un evento de error con ID 100 en la categoria de aplicaciones.Para ver los eventos del visor de eventos en powershell:PS Cocuments and Settingsuser> Get-EventLog -logName "Application"Espero que les haya gustado. Si tienen dudas escriban a este blog. Cualquier duda se las aclaro.Listo para la parte II ?: * Manejo de varios servidores usando powershell * Más sobre powershell * Cómo instalar powershell en windows 2008 * Cómo crear usuarios de AD usando powershell ? * Tutorial de powershell 2.0Referencias http://elpaladintecnologico.blogspot.com/2009/02/que-es-powershell-ejemplos-basicos-para.html