# encoding: ascii
# api: powershell
# title: Vim25 Crazy Magic
# description: Interface with vimService on ESXi.
# version: 4.0.0
# author: waldo
# license: CC0
# x-poshcode-id: 1524
# x-archived: 2011-01-10T08:49:27
#
#
cls
[void][Reflection.Assembly]::LoadWithPartialName("VMware.Vim");
# generate the proxy
$ws = New-WebServiceProxy -Uri "http://172.16.0.33/sdk/vimService?wsdl" ;
$ws.Url = "http://172.16.0.33/sdk/vimService";
$ws.UserAgent = "VMware VI Client/4.0.0";
# I modded the host to accept HTTP requests (too big of a mess with SSL)
# http://www.vmware.com/support/developer/vc-sdk/visdk400pubs/sdk40setupguide.pdf
$vimClient = New-Object Vmware.Vim.VimClient;
$servicecontent = $vimClient.Connect("http://172.16.0.33/sdk");
$usersession = $vimClient.Login("root","root");
# the below type will be unique to your host. for some reason the VimApi_25.ManagedObjectReference did not want to pass to the web service
$myMoRef = new-object Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy172_16_0_33_sdk_vimService_wsdl.ManagedObjectReference;
$myMoRef.type = "HostSystem";
$myMoRef.Value = "ha-host";
# yet to figure out where ha-host comes from...
# cookie monster your session cookies
$ws.CookieContainer = $vimClient.VimService.CookieContainer;
# call your favorite web service method
$ret = New-Object Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy172_16_0_33_sdk_vimService_wsdl.ManagedObjectReference;
$ret = $ws.RebootHost_Task($myMoRef,$true);
$ret;
$vimClient.Logout();
exit
# thanks jaykul for your omniscent guidance