Archive

Archive for February, 2010

Require a minimum version of PowerCLI

February 24th, 2010 Eric No comments

A lot of the script that I have been writing rely on new cmdlets or properties in the current release of PowerCLI. Telling people to upgrade before running the scripts has not been enough so I am going to do the smart thing and check that the appropriate version is running.

Here is the code to that I am using to do the validation.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# By default this will check that the running version of PowerCLI is greater
# than or equal to the specified version and throw an exception if not.
# For an exact match specify the -exact parameter.
function Require-PowerCliVersion
{
    param
    (
        [Int32]$build = $(throw "Require-PowerCliVersion: No build number specified."),
        [switch]$exact # If true requires the exact build number to match.
    )
 
    $passed = $false
 
    if (Get-Command Get-PowerCliVersion -ErrorAction SilentlyContinue)
    {
        $cliBuild = (Get-PowerCliVersion).Build
 
        if ($exact)
        {
            if ($build -eq $cliBuild)
            {
                $passed = $true
            }
        }
        elseif ($cliBuild -ge $build)
        {
            $passed = $true
        }
    }
 
    if (!$passed)
    {
        throw "Require-PowerCliVersion: Minimum PowerCLI version requirement not met."
    }
}
Categories: Scripting, VMware Tags:

VMware vCLI “persistent login”

February 8th, 2010 Eric No comments

Here is a short convenience script that will simulate a persistent login to a VMware host system when using the vCLI on Windows. Typically you have to specify a lot of parameters that include login information or a session file. With this method you just run the script and provide the hostname, username, and password for the connection.

After running this script you can run commands like “vicfg-mpath.pl –list” without additional parameters.

There is much that could be done to improve this script; this is just a quick and dirty version to make my life easier. If I improve it in the future I will post updates.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/perl -w
 
use strict;
use warnings;
 
my $vcli_install_dir = "C:\\Program Files\\VMware\\VMware vSphere CLI\\bin";
chdir($vcli_install_dir) or die "Could not change to the vCLI directory: $vcli_install_dir";
 
print "Hostname:";
my $host_name = <STDIN>;
chomp($host_name);
 
$ENV{'VI_SERVER'} = $host_name;
my $session_file_name = $ENV{'TEMP'} . "\\vcli.session";
$ENV{'VI_SAVESESSIONFILE'} = $session_file_name;
 
system("..\\Perl\\apps\\session\\save_session.pl");
$ENV{'VI_SESSIONFILE'} = $session_file_name;
 
print "Spawning a logged in subshell.  Type exit to end the session.\n";
system("cmd.exe");
 
# Remove the session file.
unlink($session_file_name);

Switch to our mobile site