En este post aprenderás a usar PowerShell para la automatización y administración avanzada de Máquinas Virtuales en Windows Azure. Primero veamos ¿Qué es Windows Powershell? Windows PowerShell es una interfaz de consola (CLI) con posibilidad de escritura y conjunción de comandos por medio de guiones (scripts en inglés).Powershell no sólo permite interactuar con el sistema operativo, sino también con programas de Microsoft como SQL Server, Exchange o IIS. La principal utilidad de Powershell es permitir automatizar tareas administrativas al usuario.
La característica distintiva de PowerShell, es que es un intérprete de comandos orientado a objetos. La información de entrada y de salida en cada etapa del proceso (cmdlet, “comándulo”) es un conjunto de instancias de objeto, a diferencia de lo que ocurre con los intérpretes de comandos tradicionales, que sólo devuelven y reciben texto.cloud
Si estás comenzando a aprender esta herramienta te recomiendo estas lecturas http://technet.microsoft.com/en-us/library/hh857337.aspx
Ahora veamos un poco sobre Máquinas Virtuales(VMs)…
Una máquina virtual es un software que simula a una computadora y puede ejecutar programas como si fuese una computadora real. Este software en un principio fue definido como “un duplicado eficiente y aislado de una máquina física”. Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de esta “computadora virtual”
Ahora que tienes una idea de estos conceptos veamos cómo podemos administrar nuestras VMs con ayuda de Powershell.
Puedes usar Windows PowerShell para administrar máquinas virtuales que se ejecutan en servidores Hyper-V Server Core, pero debes ejecutar las secuencias de comandos remotamente desde un equipo que tenga Windows PowerShell instalado. Además, los scripts de Windows PowerShell pueden utilizarse sólo para acceder a la interfaz WMI(Windows Management Instrumentation) en la instalación Server Core específica. Esto significa el cmdlet de Windows PowerShell primario que utilizarás para administrar máquinas virtuales que se ejecutan en Server Core es el cmdlet Get-WmiObject, que también tiene el alias asociado gwmi en Windows PowerShell.
Aquí están algunos ejemplos de cómo puedes utilizar secuencias de comandos de Windows PowerShell para administrar máquinas virtuales que se ejecutan en una instalación Server Core. Ten en cuenta que estos scripts son DEMOS y deben personalizarse para trabajar en tu entorno. Este ejemplo muestra el estado de todas las máquinas virtuales $VMState=@{2="Running" ; 3="Stopped" ; 32768="Paused" ; 32769="Suspended"; 32270="Starting" ; 32771="Snapshotting" ; 32773="Saving" ; 32774="Stopping" } get-wmiobject -computername localhost -Namespace root\Virtualization -query "Select * from MSVM_Computersystem where Description like '%Virtual%' " | format-table -autosize @{Label=”VM Name”; expression={$_.elementName}}, Description, @{Label =”VM State”; expression={$VmState[$_.EnabledState]}} Pasos para administrar Máquinas Virtuales con PowerShell en Windows Azure
PS C:\> Set-ExecutionPolicy RemoteSigned
PS C:\> Import-Module "C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\Azure\Azure.psd1"
PS C:\> Import-Module "C:\Program Files\Microsoft SDKs\Windows Azure\PowerShell\Azure\Azure.psd1"
PS C:\> Get-AzurePublishSettingsFile
PS C:\> Import-AzurePublishSettingsFile <mysettings>.publishsettings