PowerCLI PowerShell Uncategorized vmware

#LFMF VMware datastores are case sensitive!

Working in a Microsoft world with only brief forays into Unix and Apple server technologies, I tend to forget some lessons from those alternatives 🙂

So, today when working on some PowerShell scripts to copy datastore folders around for backup purposes I was a bit stumped by a copy failing as no object was found. The essential components of the script are:

Add-PSSnapin VMware.VimAutomation.Core

Connect-VIServer -Server FQDN of server or vCentre -Protocol https
$datastore = Get-Datastore Test
New-PSDrive -Location $datastore -Name TT -PSProvider VimDatastore -Root \’\\\’
Copy-DatastoreItem \’TT:\\sage\\*\’ \’J:\\esx\\test\\sage\’
start-vm -vm \’Sage\’

The Add-PSSnapin puts the VMware supplied PowerCLI snapins in place to manage ESX/vCentre architecture
Connect-VIServer does what it says on the tin
New-PSDrive creates a PowerShell drive mapping to the datastore in question so that it can be maipulated., and the Copy-DatastoreItem with those parameters copies the entire folder over (you can recurse through folders and so on if you wish, this is a simple copy)

Can you see the mistake, no I couldn\’t either!

The script would fail on the copy-datastoreitem command and jump onto the start-vm. Now I know there should be error handling and all that stuff, but this was a quick 1-off to sort something out.

So I browsed teh data store through the vCentre interface, all was there, the target folders were there…

In the end the Unix issue of capitalisation rang a distant echo. The Sage folder on the datastore was precisely that \”Sage\” not \”sage\”.

Quick edit, and all is running.


\’scuse the inappropriate word wraps in the code.

Backdoor HTC Mango Microsoft OrangeUK PowerShell Problem Succeed Uncategorized Windows Mobile WP7

Want #Mango #WP7 now? But your network connection is not immediately adjacent to your desk, or awkward to break. #PowerShell

Mango is now available, and there is a cheat that seems to bypass the “wait until Microsoft/Your Carrier” make it available to you.  Read more here:
However the trick relies on disconnecting your internet connection within a few seconds.  This is fine and dandy if the cable is right by your keyboard, mouse and monitor, but not if it isn’t.
Obviously you can enable/disable the NIC, but Windows 7 (at least here) takes a variable amount of time to perform the disconnect.  Factor in UAC asking you for permission to disconnect then you have a bigger timing problem.
So a quick jump to the internet.  The following lines of code sort it out.
Firstly, start a PowerShell session (ISE or prompt), but with Run as Administrator rights to avoid issues.
Then use the line:
Get-WmiObject -Class Win32_NetworkAdapter | Format-Table Name, NetEnabled, NetConnectionStatus, DeviceId –auto
This lists all your network connections, (extract below)
Name                                       NetEnabled NetConnectionStatus DeviceId
—-                                       ———- ——————- ——–
WAN Miniport (Network Monitor)                                            6      
Intel(R) PRO/1000 MT Server Connection     True       2                   7      
Identify the Device ID for your network connection.  In this case 7.
The following lines of code needs to run once only in your ISE session
$Nic = Get-WmiObject win32_networkadapter -computerName LocalHost -filter \”DeviceId = 7\”
Note that the number 7 at the end will need to be changed for your environment.
Then finally –
As you wish to switch your NIC on and off. 
So, having prepped all that, a quick click on linking on the Zune screen below
Followed by a click on UPDATE, and then immediately run the disable command, and Robert’s your mother’s brother.  When you click on the presented choice to download an update – don’t forget to enable your link again.
Note you may need to update teh Zune software, so you\’ll get a bit of this:

For a bit.

But then you should see an update offered, something like this.

7403 offered to user
7403 ready to download

Repeat until you have Mango installed


Fail King Crimson PowerCLI PowerShell Succeed Uncategorized vmware

#LFMF #PowerCLI Get-Folder contents #PowerShell

Because a “copy folder from the Datastore browser” backup of VM files is so inefficient, I’m writing a PowerShell process to improve my backups of the virtualised world.  Because I can move VM’s around onto different storage locations a hard coded “goto this datastore, download these VM’s” is going to need rewriting every time I do this.*

So I resolved to use as a starting point the Get-Folder command (and spawn a generic process for each Folder) that I have.

So I started to look at a folder (from the VMs and Templates view, not Hosts and Clusters) to do some testing on.  As the only, completely non active folder is Templates, I thought I’d start with that.

So the line of code I was looking at was something like:

Get-VM -Location (Get-Folder Templates) | Sort Name)

However I was getting nothing back, the code would run (there’s a lot more, but I won’t bore you with it until it’s all working), and there was a null result.  I didn’t quite spend days and days looking at it (see King Crimson – Indiscipline, Lyrics here), but I did spend quite a while thinking I’d got something wrong.

Then I had a thought – isn’t there a Get-Template command too?

Coded like this:
Get-Template -Location (Get-Folder Templates) | Sort Name)

I get some results.  Stupid of me to test a folder with wholly atypical contents

More later!

*I know some will wonder why I take flat file backups of VM’s.  It’s because I’m paranoid OK?  I copy them to external USB/FireWire drives for complete recoverability.  It’s not like I do it every day or anything