Are you still performing old-school in-guest VM backups with a backup agent? Not ready to buy a backup product that does complete VM backups through the vStorage APIs? Then you will need to rebuild all your VM’s with the original configuration before you can start restoring your data.
As always: PowerCLI to the rescue! This script will connect to vCenter Servers on your primary site and secondary (recovery) site. Continue reading Poor Man’s Virtual Machine Backup with PowerCLI
Annoyed by the default setting for VM’s inside a vApp? I was, because when you power down the vApp, the VM’s are powered down instead of being shutdown cleanly. It can be a tedious task to check and correct this setting for all your vApps. This little script solves that problem for you. Enjoy!
$VC = Connect-VIServer "MyvCenter.local"
ForEach ($Vapp in Get-VApp)
$VAppView = $VApp | Get-View
ForEach ($Entity in $VAppView.VAppConfig.EntityConfig)
If ($Entity.StopAction -ne "guestShutdown")
$VAppConfigSpec = New-Object VMware.Vim.VAppConfigSpec
$EntityConfig = New-Object VMware.Vim.VAppEntityConfigInfo
$EntityConfig.Key = (Get-View $Entity.Key).MoRef
$EntityConfig.StopAction = "guestShutdown"
$VAppConfigSpec.EntityConfig = $EntityConfig
Download script: Set-VAppGuestShutdown (rename to .ps1)
Determining the LUN ID for a specific LUN in your VMware Infrastructure used to be simple. It was listed as one of the properties of the datastore you selected in the VI Client. Nowadays, more often than not, I dont see the LUN ID in the vSphere Client. Instead, I see some sort of identifier like “EMC Fibre Channel Disk (sym.12673548127)”.
Even more unfortunate is the fact that all my scripts show the same identifier, where they used to show the LUN ID. So I decided to create a script that can translate the identifier (sometimes referred to as Canonical Name) back to a LUN ID.
By the way: in the vSphere Client, you can still find the LUN ID by opening the datastore’s properties window and clicking Manage Paths. Or you could write down the canonical name, switch to the devices view and look up the device there. That is essentially what my script does for you.
Here we go:
Continue reading Find LUN ID’s in VMware with Powershell
Do you get these events in your system log?
The service cannot be started, either because it is disabled or because it has no enabled devices associated with it. attempting to start the service ntmssvc with arguments “-Service” in order to run the server:
Symantec explains this is caused by disabling the Removable Storage Manager and provides a solution.
Removing those registry keys on a bunch of servers manually is a pain. Modifying DCOM settings even more so. So I explored fixing this with Powershell.
Continue reading Fix DCOM Event 10005 with Powershell
Wow, vSphere vCenter Server has a lot of new alarms! Great for monitoring your environment. But a pain when it comes to documenting it. Thank
God VMware for the PowerCLI! Just a few lines of code can do the documentation for you.
Continue reading Report vSphere Alarms with Powershell
WARNING: VMware vmotion does not check wether there are sufficient ports available on the virtual switch on the destination host. Migrating a vm to a host with insufficient ports will cause the vmotion to complete without warnings, yet the virtual NIC will be disconnected! This issue is descripbed in this KB article.
The solution to this problem is to create vSwitches with sufficient ports, obviously. Do you want to know how many ports are currently being used on every vSwitch in your environment? vSphere PowerCLI to the rescue! Try the following script:
Continue reading Create a vSwitch Port Overview with Powershell
When your (VMware) consolidation ratios are becoming high, it might be smart to keep an eye on your vm’s CPU Ready Times. Unfortunately, by default, the VI Client will only show realtime ready time statistics. Plus you’d have to look at each vm individually. Thank
God VMware for the PowerCLI! Read this document for more information on how to interpret the results.
Continue reading Examine VMware CPU Ready Times with Powershell
The following Powershell functions allow you to manage querying, creating and removing scheduled tasks on one or more computers remotely.
The functions use schtasks.exe, which is included in Windows. Unlike the Win32_ScheduledJob WMI class, the schtasks.exe commandline tool will show manually created tasks, as well as script-created ones. The examples show some, but not all parameters in action. I think the parameter names are descriptive enough to figure it out, really. If not, take a look at schtasks.exe /?. One tip: try piping a list of computer names to foreach-object and into this function.
Continue reading Managing Scheduled Tasks Remotely Using Powershell
The following script examines servers from (part of) your Active Directory domain, identifies SQL servers and lists the instances with their total database sizes.
Continue reading Get SQL database size using Windows Powershell
Yesterday, I showed you how to script the WSUS Cleanup Wizard with Powershell. Today, the WSUS fun continues! Here’s how to use powershell to “manually” synchronize your WSUS server, i.e. download the latest updates.
Continue reading Synchronize WSUS with Powershell