VMware Powershell script - remove connected iso

posted by Johan van Zanten
July 29, 2008

In the light of the offically released Virtual Infrastructure Toolkit I decided to create a simple powershell script. I’m planning to create more powershell scripts and post them on virtualfuture.info.

The first one is a script which can remove the connected iso files from the CD drive. Some administrators do not disconnect a CD drive when the have finished use the ISO, the side effects of this behaviour are: the VM regurally polls the CD drive which creates a slight overhead and a VMotion may fail. This script can run unattended e.g. every night so even when an ISO file remains mounted it is ejected everynight. Here’s the script:

Connect-VIServer -Server myVIserver (connect to the VI server)
get-cddrive -VM * |where {$_.ISOPATH -ne $null}|set-cddrive  -nomedia

I think the script speaks for itself.

So if anyone thinks of something to script and don’t know how please leave a comment and maybe we can find a way to script it.

Share/Save/Bookmark

Related articles

Tags: , , , ,


9 Responses to “VMware Powershell script - remove connected iso”

  1. Rob Mokkink Says:

    Het moet zijn connect-viserver

    [Reply]

    Johan van Zanten reply on July 29th, 2008 1:28 pm:

    Hi Rob,

    Thanx for the comment a typo can easily be made. In reply of your comment are there any automated tasks you would to have scripted or do you have by any means usefull scripts ?

    Johan

    [Reply]

    Rob Mokkink reply on July 29th, 2008 6:06 pm:

    Hi Johan,

    I created a couple of scripts, for example the HBA loadbalance script, see http://blogs.vmware.com/vipowershell/2008/07/storage-path-lo.html

    Currently i am busy creating a script that read a .csv file, creates a VM based on a template. But it can also poweroff and remove a VM and redeploy it.

    Also the script has the possibility to be put in a resourcepool or in the clusters default resourcepool.
    Ask Matthijs about it, he is my current collegue at project we are working on right now.

    [Reply]

    Johan van Zanten reply on July 30th, 2008 12:39 pm:

    Hi Rob,

    I have read the storage-path-lo article on the VMware blog and found in an facinating process.

    The one you are working is just the function Sven asked about, I am axious to see what’s the result of that. :)

    I prefer the simple oneliner scripting thingies because they show the real power of powershell and are much easier to understand for people who are starting with scripting / powershell

    Chris Woods reply on August 20th, 2008 1:18 pm:

    Hi Rob

    Hows the script to read from a csv file and create VM’s based on a template going. I’ve got as far as creating the VM’s from a csv file but struggling with creating them from a template.

  2. Sven Huisman Says:

    Hi Johan,

    Can you create a powershell script that disconnects the network interfaces in all virtual machines? This can be usefull in case of a virus-outbreak.

    Another script that would be usefull is a script that reads out a CSV or TXT file (which contains certain parameters like VM-name, memory size, network, template to use) and then uses those parameters to deploy a new VM.

    [Reply]

    Johan van Zanten reply on July 29th, 2008 1:45 pm:

    Hi Sven,

    That’s easy:
    First you need to connect to a VI or ESX server with the Connect-VIServer (like Rob pointed out)commandlet

    next you use the get-networkadapter commandlet en pipes the output to the set-networkadapter
    the complete commandline will be:
    Get-NetworkAdapter -VM * |set-networkadapter -connected $false

    the otherone I will explain in a future article

    grtx Johan

    [Reply]

  3. Sven Huisman Says:

    Johan,

    how about this:
    list al VM’s which has snapshots, then delete those snapshots.

    [Reply]

    Johan van Zanten reply on July 30th, 2008 8:54 am:

    Hi Sven,

    What I like about powershell is the simplicity of the commands and the ease to create powerfull single line scripts, aka one-liners.

    That’s easy as well but it took a little work:
    first I put all the snapshots into a single variable with this command:
    $snap = get-snapshot -vm * this variable can be used as input for the actual removal:
    remove-snapshot -snapshot $snap.

    you can combine the two commands on a single line:
    $snap=get-snapshot -vm * ; remove-snapshot -snapshot $snap

    on the otherhand I cannot emphasize the importace of being carefull with such powerfull commands !

    that’s all

    [Reply]


Leave a Reply


Powered by WP Hashcash