| Eric Siebert, Contributor | |
Scripting tools help manage a VMware environment by automating common administration tasks. But some VMware scripting tools, such as Perl, come with a learning curve. Fortunately, each
Requires Free Membership to View
Installing PowerShell
PowerShell is a command-line shell and associated scripting language developed by Microsoft to help
automate common administration tasks. It can also provide information about your VMware
environment. In the past, admins have used PowerShell to script different tasks in a Windows
environment. The latest versions of the VI Toolkit provide PowerShell with access to the VMware
API, which enables admins to use PowerShell to execute VMware-related commands. Many VMware
administrators are also Windows system administrators, so VMware admins interested in scripting may
find PowerShell easier to learn than other scripting languages such as Perl. PowerShell is fairly
easy to install and use, and there are many useful scripts available for VMware environments.
The first step is to install PowerShell on your workstation. PowerShell is available as a small (less then 2 MB) download from Microsoft's website. Once you've downloaded the file, you can install it on your workstation. A shortcut is then added to the PowerShell command prompt, which is where you run PowerShell scripts. The PowerShell command prompt looks similar to a MS-DOS command prompt, and all standard MS-DOS commands work in it (i.e., dir, cd) in addition to PowerShell scripts and commands.
Before we install the VI Toolkit, let's try a few basic PowerShell commands. Open the PowerShell command prompt and type
get-Process.
This command will return a list of all running processes. Next, try typing
get-WmiObject win32_bios.
This command returns your computer's BIOS information.
PowerShell scripts are a series of commands. They have a .ps1 extension and are referred to as cmdlets. For security purposes, the PowerShell execution policy is set to Restricted by default. This setting prevents cmdlets from running, so you need to change it. To do so, open a PowerShell prompt and type
get-ExecutionPolicy.
This returns the current setting (Restricted). Next, type
set-ExecutionPolicy RemoteSigned
to change the setting from Restricted to RemoteSigned, which enables scripts to run locally but prevents them from running remotely. You can also set this to Unrestricted or AllSigned, but these settings are less secure. Both Windows PowerShell commands such as
get-ExecutionPolicy and get-Process
and VMware PowerShell commands, such as
Get-VM
are also referred to as cmdlets. You can see a list of Windows cmdlets by typing
Get-Command.
You can get help on specific cmdlets by typing
Get-Help <cmdlet name>.
Installing the VI Toolkit
Now that you have PowerShell installed, let's install the VI Toolkit so you can run VMware
PowerShell commands. First, download the latest VI Toolkit from VMware's website. (The Toolkit is updated
periodically with new commands, so check back periodically and update to the latest release if
necessary.) Next, install the downloaded file. This installs the VI Toolkit libraries (dll and xml
files) for PowerShell, creates shortcuts for several documentation resources, and create a shortcut
for a special PowerShell command prompt to use with the VI Toolkit. Without this prompt you can run
into trouble. If, for example, you run cmdlets from the VI Toolkit with the originally installed
PowerShell command prompt, cmdlets won't work because PowerShell is not aware of them. The new
shortcut that is created called the VMware VI Toolkit calls PowerShell but also references a
special .psc1 file so the VI Toolkit cmdlets are added as "SnapIns". SnapIns are used to extend
PowerShell, add additional cmdlets and provide increased functionality. You can get a list of which
SnapIns are loaded by typing
get-PSSnapin registered.
This command displays the VMware.VimAutomation.Core 1.0 SnapIn otherwise known as the VI Toolkit.
Using the VI Toolkit
Now that you have the VI Toolkit installed, you can use it with your VMware environment. But before
we begin, let's review the syntax for PowerShell cmdlets. Most cmdlets have options and parameters.
To see the available options, use the
get-help
cmdlet. You can also use multiple cmdlets simultaneously by stringing them together using the pipe (|) symbol. This is called pipelining and joins the cmdlets together so the output of the first cmdlet becomes the input for the second. For example, typing
Get-VM | Get-Snapshot
would instruct the program to use the VM list returned by the Get-VM command for the second command, Get-Snapshot. This would ultimately display a list of snapshots that exist on the VMs.
The first thing you need to do is connect to a host or vCenter Server, to do so you can use the
Connect-VIServer cmdlet. There are many options for this cmdlet, but in its simplest form you can
just type the command and it will prompt you for a host to connect to, followed by a login window.
You can also instruct PowerShell which host to connect to and supply login information by using the
following command syntax:
Connect-VIServer –server <host name> -user <user name> -password <password>
Once you are connected to vCenter or the host server, you can use other commands to get or set information. Try typing
get-VM
for a list of all VMs on the host,
get-virtualswitch
for a list of all virtual switches and
get-vm | get-cddrive
for status information on all your VMs' CD/DVD-ROM drives.
You can see a list of all the available cmdlets as well as descriptions, syntax and usage examples in the VI Toolkit help file that was installed as a shortcut. Building your own scripts is a helpful way to use cmdlets, because it allows you to type one command that executes multiple cmdlets. Fortunately, VMware users have written and published many PowerShell scripts on various websites that you can download and use in your environment.
Once you are comfortable with using PowerShell with VMware, you may want to set up a graphic user interface to replace the command line interface. In my next tip, I'll outline this process.
ABOUT THE AUTHOR: Eric Siebert is a 25-year IT veteran who specializes in Windows and VMware system administration. He is a guru-status moderator on the VMware community VMTN forums and maintains VMware-land.com, a VI3 information site. He is also the author of an upcoming book titled VI3 Implementation and Administration due out in June 2009 from Pearson Publishing and is a regular on VMware's weekly VMTN Roundtable podcast.
This was first published in February 2009

Join the conversationComment
Share
Comments
Results
Contribute to the conversation