Spanish

 View Only
Expand all | Collapse all

listado con get-vm

  • 1.  listado con get-vm

    Posted Feb 17, 2010 11:51 AM

    Buenas:

    Necesitaría un listado de maquinas apagadas durante más de 100 días, para poder borrarlas y liberar espacio de un filesystem.

    He estado mirando informacion y conseguido con este comando sacar todas las maquinas apagadas en el datastore concreto 'Desarrollo' pero..o como puedo sacar la ultima vez que se encendio la maquina ??

    C:\> get-vm -location Desarrollo | Where {$_.PowerState -eq 'PoweredOff' }

    Seguiré investigando pero una ayuda me vendría genial.

    He sacado informacion e ideas de aqui pero no puedo ejecutar el script que cuelgan porque me dice que no esta firmado:

    http://blogs.vmware.com/vipowershell/2009/10/when-was-the-last-time-that-vm-was-powered-on.html

    C:\> & '.\VM Last Poweron Time.ps1'

    File C:\VM Last Poweron Time.ps1 cannot be loaded. The file C:\VM Last Poweron

    Time.ps1 is not digitally signed. The script will not execute on the system. Pl

    ease see "get-help about_signing" for more details..

    At line:1 char:2

    + & <<<< '.\VM Last Poweron Time.ps1'

    Salu2 y gracias a todos por la ayuda.



  • 2.  RE: listado con get-vm

    Posted Feb 17, 2010 12:12 PM

    Hola. Cuando instalaste powerCLI te salió una pantalla que te decía que los scripts no firmados no podrían ser ejecutados. Por defecte seguramente le diste a continuar y la instalación finalizó correctamente. Se trata de una política de seguridad para evitar la ejecución remota de scripts contra un ESX o un Virtual Center.

    Una vez instalado, desde PowerCLI ejecuta la siguiente sentencia para permitir scripts no firmados:

    Set-ExecutionPolicy AllSigned

    Luego vuelve a ejecutar el programa. si te sige sin funcionar ejecuta entonces:

    Set-ExecutionPolicy RemoteSigned

    Espero que te sea de ayuda

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 3.  RE: listado con get-vm

    Posted Feb 17, 2010 12:28 PM

    Hola

    Lo que me has dicho me ha servido para conocer el problema pero no se me ha solucionado, sigue sin dejarme ejecutar el .ps1

    Cuando he arrancado el PowerCli:

    Do you want to run software from this untrusted publisher?

    File C:\Archivos de programa\VMware\Infrastructure\vSphere

    PowerCLI\VMware.VimAutomation.Format.ps1xml is published by CN="VMware, Inc.",

    OU=Marketing, OU=Digital ID Class 3 - Microsoft Software Validation v2,

    O="VMware, Inc.", L=Palo Alto, S=California, C=US and is not trusted on your

    system. Only run scripts from trusted publishers.

    Never run Do not run Run once Always run Help

    (default is "D"):

    Le he dado a A, arrancar siempre y nada.

    File C:\VM Last Poweron Time.ps1 cannot be loaded. The file C:\VM Last Poweron

    Time.ps1 is not digitally signed. The script will not execute on the system. Pl

    ease see "get-help about_signing" for more details..

    At line:1 char:2

    + & <<<< '.\VM Last Poweron Time.ps1'

    Salu2 y gracias.



  • 4.  RE: listado con get-vm

    Posted Feb 17, 2010 01:39 PM

    Hola Salalon, realiza la siguiente comprabación:

    Desde PowerCLI, ejecuta el comando:

    Get-ExecutionPolicy

    Esto te devolverá la política configurada de seguridad. Debería retornarte Unrestricted para que te funcione el script.

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 5.  RE: listado con get-vm

    Posted Feb 17, 2010 01:42 PM

    Ah. por otra parte, si no lo tienes en unrestricted, monta una sentencia similar a la siguiente, que te permite certificat el script sign-file.ps1, pero hazlo con el nombre de tu script:

    $cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]

    Set-AuthenticodeSignature sign-file.ps1 $cert

    Luego vuelve a probar.

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 6.  RE: listado con get-vm

    Posted Feb 17, 2010 02:38 PM

    C:\> Get-ExecutionPolicy

    AllSigned

    C:\> $cert = @(Get-ChildItem cert:\CurrentUser\My -codesignin

    g)[0]

    C:\> Set-AuthenticodeSignature sign-cripi.ps1 $cert

    Set-AuthenticodeSignature : Cannot bind argument to parameter 'Certificate' bec

    ause it is null.

    At line:1 char:26

    + Set-AuthenticodeSignature <<<< sign-cripi.ps1 $cert

    Pero con esta otra sentencia Set-ExecutionPolicy -ExecutionPolicy RemoteSigned me ha reportado un error totalmente distinto el cual no se por donde seguir.

    C:\> get-vm | ./cripi.ps1

    Parameter declarations are a comma-separated list of variable names with option

    al initializer expressions.

    At C:\cripi.ps1:9 char:11

    + )] <<<<

    Salu2,



  • 7.  RE: listado con get-vm

    Posted Feb 17, 2010 03:10 PM

    Mmm... pienso que ya se de qué va. Ejecuta:

    Set-ExecutionPolicy Unrestricted

    Y luego ejecuta el script.

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 8.  RE: listado con get-vm

    Posted Feb 17, 2010 03:20 PM

    Nada. sigue igual, me ha comentado un compañero que a lo mejor en vez de ejecutar así el comando debería de crear un comando propio llamado lo que sea que tenga dentro el script o algo así.

    Tu piensas que esto debería de leerlo correctamente ??

    get-vm | ./cripi.ps1

    EDITO: El problema es del script estoy intentando ver que leches está mal aunque lo he copiado directamente de la web.

    Salu2,



  • 9.  RE: listado con get-vm

    Posted Feb 17, 2010 03:45 PM

    Hola Salalon,

    sí, he charlado alguna vez con el creador de ese script (LucD) pero debes tener en cuenta que el script te permite obtener la fecha de último inicio de la VM a través de un bug que por casualidad permite obtener esa información. Debes y PowerShell 2.0 para que funcione el script (¿Lo tiene instalado? o quizá tienes powershell 1.0?) Por otra con PowerCLI 4.0 creo que han solventado el bug que dejaba ver esta información (si tienes PowerCLI 4.0 seguramente el script no te funcionará...)

    Revisa estas versiones a ver y dime qué tienes instalado...

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 10.  RE: listado con get-vm

    Posted Feb 17, 2010 04:13 PM

    Tengo PowerShell 1.0 de windows XP, PowerShell de Exchange 2007 y la ultima version del CLI... asi que ya supongo por donde van los tiros, aunque el error que me da es raro como estuviese mal el script, voy a probar a desinstalar el CLI e instalarme una version vieja del Toolkit a ver que pasa.



  • 11.  RE: listado con get-vm

    Posted Feb 17, 2010 04:31 PM

    Prueba el script que te he pasado que en esencia hace lo mismo:

    Get-VM "NOMBRE DE TU MAQUINA VIRTUAL" | Get-VIEvent -Types Info -MaxSamples 1000 | Where-Object {$_.fullFormattedMessage -match "Powered On"} | Sort-Object -property createdTime | select -last 1 | %{ Write-Host $_.createdTime | Out-Default }

    Luego con un poco más de trabajo podrás calcular en función a la fecha actual si lleva más de 100 días sin arrencarse o no.

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 12.  RE: listado con get-vm

    Posted Feb 18, 2010 07:59 AM

    Estoy en ello ese comando ya lo había probado pero se queda como colgado (es que no esperaba lo suficiente), si pongo una sola maquina si que me funciona pero si pongo esto no funciona:

    get-vm -location Desarrollo | Where {$_.PowerState -eq 'PoweredOff' } | Get-VIEvent -Types Info -MaxSamples 1000 | Where-Object {$_.fullFormattedMessage -match "Powered On"} | Sort-Object -property createdTime | select -last 1 | %{ Write-Host $_.createdTime | Out-Default }

    resultado: 17/02/2010 12:26:44

    Solo me saca una maquina, como si solo sacase la ultima que lee o algo asi. Megustaría que sacase un listado con maquinas a la izquierda y la hora del ultimo encendido a la derecha.

    MAQUINA HORA

    Salu2,



  • 13.  RE: listado con get-vm

    Posted Feb 18, 2010 08:28 AM

    Buenas,

    sustituye:

    Write-Host $_.createdTime | Out-Default }

    por lo siguiente:

    Write-Host 'Nombre VM: ' $_.vm.name 'Último PowerOn: ' $_.createdTime | Out-Default }

    Esto te dirá qué máquina ha detectado.

    Luego ejecuta:

    get-vm -location Desarrollo

    y comprueba que la máquina que te ha dicho la fecha de último reinicio corresponda con la última máquina que aparece en el listado de este último comando.

    A ver si desciframos el porqué.

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 14.  RE: listado con get-vm

    Posted Feb 18, 2010 08:40 AM

    Buenas:

    1000gracias por tu ayuda, al final saque este comando y me ha sacado lo que necesito, aunque voy a añadir los detalles que tu me has dicho para que salga OK por pantalla, había que quitar | select -last 1, que parece que solo sacaba el ultimo.

    Get-VM -Location DesarrolloExterno | Where {$_.PowerState -eq 'PoweredOff'} | Get-VIEvent -Types Info -MaxSamples 1000 | Where-Object {$

    .fullFormattedMessage -match "Powered On"} | Sort-Object -property createdTime %{ Write-Host $.vm.name $_.createdTime}

    Ahora voy a intentar sacarlo a CSV por si acaso no consigo comparar las fechas y tenga que hacer una formula en Excell. Para exportar con excell es export-csv c:\fichero.csv ?? me crea el fichero pero me lo hace en blanco.

    Salu2 y gracias



  • 15.  RE: listado con get-vm
    Best Answer

    Posted Feb 18, 2010 09:13 AM

    Debes concatenar al comando GET-VM ...... el siguiente:

    l export-csv c:\salida.csv

    Sin olvidar la pipe l (he sustituido la pipe por una L minúscula, porque el formato del post lo interpreta como una sección).

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 16.  RE: listado con get-vm

    Posted Feb 18, 2010 09:19 AM

    No funciona, lo he intentado pq ya lo había encontrado antes pero me lo saca por pantalla pero luego crea el fichero y lo deja en blanco.

    He probado otros comandos más facil como por ejemplo:

    get-vm | select Name, Description, PowerState, Memory,@{Name="Host"; Expression={$_.Host.Name}} | export-csv c:\output.csv*

    y me lo hace perfectamente, pero con el mio nada.

    En pantalla me lo saca bien con este formato:

    MAQUINA 17/02/2010 13:49:11 separado por espacios, que podría dejarlo genial en un csv pero...

    EDITO: me he dado cuenta ordenando por nombre en vez de por CreatedTime me saca algo que no quiero, no me había dado cuenta que devuelve todos los ultimos powerON y no solo el ultimo, a lo mejor tiene que ver algo con el | select -last 1 que habia quitado pero ese solo me saca el ultimo que lee... menudo lio.

    Salu2,



  • 17.  RE: listado con get-vm

    Posted Feb 18, 2010 10:47 AM

    Me deja perplejo, porque a mi me funciona bien... ¿No será por la versión de Pwoershell que tienes instalada? Al fin y al cabo el cmdlet export-csv es nativa de Powershell. Tiernes 1.0 o 2.0?

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 18.  RE: listado con get-vm

    Posted Feb 18, 2010 10:54 AM

    Tengo PowerShell 1.0 de windows XP, PowerShell de Exchange 2007 y la ultima version del CLI, esto supongo que te refieres al tema del |export-csv, pero lo raro es que si funcione con unos comandos y con otros no. Has probado el mismo comando que yo y si que te funciona ?

    Que me dices del tema de que me saque todas las entradas del registro donde ponde POWERON de una maquina, hay alguna manera de sacar solo la ultima vez que lo hizo ? pq sino las 1000 entradas esas que se que son el maximo se me van a quedar muy cortas.

    Salu2,



  • 19.  RE: listado con get-vm

    Posted Feb 18, 2010 11:25 AM

    Sí, yo lo he probado con eo mismo comando y me funciona la exportación csv. Por otra parte la cadena del código que has eliminado es justamente para obtener la última vez que hizo power on, es decir, obtiene el últim evento de ese tipo para cada máquina. Pero si lo dejas y no te sale ningún evento.... Parece otro misterio por resolver.

    Yo también tengo PowerShell 1.0 de Windows server 2003 pero no tengo el de Exchange, en cambio, tengo el de SCOM.

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 20.  RE: listado con get-vm

    Posted Feb 18, 2010 11:38 AM

    OK OK pues nada seguiré mirando y si no puedo exportarlo a CSV lo copiaré de la pantalla de la consola y listo.

    Muchas gracias por tu tiempo y ayuda.

    Salu2,



  • 21.  RE: listado con get-vm

    Posted Feb 17, 2010 03:51 PM

    Prueba también esto:

    Ejecuta:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

    Y luego ejecuta el script

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 22.  RE: listado con get-vm

    Posted Feb 17, 2010 04:05 PM

    Salalon,

    he preparado este script donde, le especificas la máquina virtual que quieres en "NOMBRE DE TU MAQUINA VIRTUAL", con el nombre de la VM, que aparece en el VC o si prefiueres que se ejecute para todos los servidores, quitale ese literal. Esto te devolverá la última vez que el servidor hizo Power On, pero revisando de los eventos de la máquina (tasks and events) cuándo fue la última vez, teniendo en cuenta que sólo podremos revisar los últimos 1000 eventos que es el límite máximo que permite VMWare:

    Get-VM "NOMBRE DE TU MAQUINA VIRTUAL" | Get-VIEvent -Types Info -MaxSamples 1000 | Where-Object {$_.fullFormattedMessage -match "Powered On"} | Sort-Object -property createdTime | select -last 1 | %{ Write-Host $_.createdTime | Out-Default }

    A mi me funciona, Ya me dirás!

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 23.  RE: listado con get-vm

    Posted Feb 18, 2010 01:38 PM

    Hola Salalon,

    Quizás el appliance vMA te sirva mejor para aliviar este problema, en lugar del vSphere CLI.

    El vMA tiene un entorno de scripting mucho mas "rico", es decir incluye el vSphere CLI, perl y un montón de APIs para hacer de este appliance en el entorno de gestión vía comandos por excelencia. En fin, supongo que es cuestión de gustos.

    Lo malo, es que es otra maquina virtual mas (RH) que tienes que arrancar, mantener y actualizar. Pero creo que lo bueno supero a lo malo.

    Saludos,

    Jose Maria Gonzalez,

    Founder and President of JmGVirtualConsulting.com

    -


    See http://www.JmGVirtualConsulting.com for official Vi3 and vSphere consultancy

    See http://www.josemariagonzalez.es for my blog on VMware training and tips

    See http://www.twitter.com/jose_m_gonzalez for some twittering

    VMware vExpert 2009

    Autor del libro <a href="http://www.lulu.com/product/tapa-blanda/101-secretos-de-vmware-vsphere/6233290" target="_blank">101 Secretos de VMware vSphere</a>

    Autor del libro VMware ESX y VMware VCP Hecho Fácil

    -


    If you find this or any other answer useful please consider awarding points by marking the answer helpful or correct.

    <a href="http://feedproxy.google.com/ElBlogDeVirtualizacionEnEspanol">!http://feedproxy.google.com/ElBlogDeVirtualizacionEnEspanol.2.gif!</a>



  • 24.  RE: listado con get-vm

    Posted Feb 19, 2010 10:42 AM

    Gracias Jose Maria pero al final con lo que saque tuve suficiente, aunque al final tuviese que hacer parte a mano no pasa nada.

    Por otro lado, ahora tengo otro entre manos sacar todos los discos de una maquina virtual, en que DataStore esta almacenado y cuanto ocupa. Llevo toda la mañana probando pero solo he conseguido sacar el espacio, con los VMDK y si son persistentes. En cambio si ejecuto este comando que es lo más parecido a lo que necesito hay disco que no me saco el espacio.

    C:\&gt; Get-VM -location Desarrollo | select Name, @{Name="Tamanyo";Expression={($_ | Get-HardDisk).CapacityKB}}, @{Name="DataStore";Expression={($_ | Get-DataStore).name}} | Sort-Object -property Name

    Alguna idea de donde puedo estar fallando o decirme como lo haceis vosotros, alo mejor me he complicado mucho para algo que parece facil

    Salu2,



  • 25.  RE: listado con get-vm

    Posted Feb 19, 2010 11:31 AM

    He creado un script para hacer eso. Te explico:

    1) Crea un fichero denominado vmdks.PS1 y déjalo en tu C:\

    2) Añade el siguiente código al fichero vmdks.PS1:

    Add-PSSnapin VMware.VimAutomation.Core

    Connect-VIServer -Server SERVIDORVIRTUALCENTER -User "USUARIO" -Password "CONTRASEÑA"

    $vms = Get-VM

    Foreach ( $vm in $vms ) {

    Write-Output ("")

    Write-Output ("> Nombre VM: " + $vm.Name)

    Write-Output ("> vCPUs: " + $vm.NumCPU)

    Write-Output ("> vRAM: " + $vm.MemoryMB + " MB.")

    Write-Output ("> On/Off: " + $vm.PowerState)

    Write-Output ("> vDisks: ")

    $vhds = Get-HardDisk -vm $vm

    $numvhds=0

    $vhdtotal=0

    Foreach ( $vhd in $vhds ) {

    $vhdsize = ::round($vhd.CapacityKB*1KB/1GB,2)

    Write-Output (" " + $vhd.Filename + " ::: (" + $vhdsize + " GB)")

    $numvhds++

    $vhdtotal = $vhdtotal + $vhdsize

    }

    Write-Output ("> " + $numvhds + " discos virtuales que suman " + $vhdtotal + " GB.")

    }

    No te olvides cambiar los literales que aparecen en el Script: SERVIDORVIRTUALCENTER por tu servidor de Virtualcenter, USUARIO y CONTRASEÑA por lo que corresponda.

    3) Ejecuta el script mediante: Powershell -command "&C:\vmdks.PS1"

    Dime si te gusta el formato.

    Saludos

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 26.  RE: listado con get-vm

    Posted Feb 19, 2010 11:34 AM

    Veo que ha quedado el formato mal al publicar el script. Donde ves el iconito ese que sale al lado de math:

    ::

    Debería ser:

    ABRIR CORCHETEmathCERRARCORCHETE y luego ya vienen los ::

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.



  • 27.  RE: listado con get-vm

    Posted Feb 19, 2010 11:55 AM

    Impresionante muy bien presentado y funciona perfecto. Como me corría algo de prisa me ha tocado hacerlo a mano juntando estos dos comandos y manipulando un poco el Excell aunque te lo agradezco mucho porque me lo guardaré para la siguiente vez que lo necesite.

    C:\&gt; Get-VM -Location Produccion2 | Sort-Object -property Name (DE AQUI COPIAMOS LOS NOMBRES ORDENADOS)

    C:\&gt; Get-VM -Location Produccion | Sort-Object -property Name | Get-HardDisk (DE AQUI COPIAMOS LOS DISCOS Y DATASTORE)

    1000gracias.



  • 28.  RE: listado con get-vm

    Posted Feb 19, 2010 12:09 PM

    A disfrutarlo.

    Saludos.

    Xavier

    VMware Certified Professional VCP3 and VCP4.

    -


    Si encuentras que esta o cualquier otra respuesta ha sido de utilidad, vótalas. Gracias.

    If you find this or any other information helpful or correct, please consider awarding points. Thank you.