Today I saw the question on the VMware{Code} Slack Channel if anyone ever managed to disabled Desktop Pools using PowerCLI. I was like yeah I have done that and you might need to user the helperservice for that. I offered to create q fast and quick blog post about it so here we go.
First as always I connect to my Connection Server and use a query to retrieve the Pool that I am going to disable.
$creds=import-clixml creds.xml $hvserver=connect-hvserver pod1cbr1.loft.lab -Credential $creds $hvservice=$hvserver.ExtensionData $poolqueryservice=new-object vmware.hv.queryserviceservice $pooldefn = New-Object VMware.Hv.QueryDefinition $filter = New-Object VMware.Hv.QueryFilterEquals -Property @{ 'memberName' = 'desktopSummaryData.name'; 'value' = "Pod01_Pool01" } $pooldefn.filter=$filter $pooldefn.queryentitytype='DesktopSummaryView' $pool = ($poolqueryService.QueryService_Create($hvservice, $pooldefn)).results
With this object I can show you the details of the desktop pool
($hvservice.Desktop.Desktop_Get($pool.id)).base ($hvservice.Desktop.Desktop_Get($pool.id)).desktopsettings
Like I said to actually change things I need the helper service so this is what you do to initialize that.
$desktopservice=new-object vmware.hv.DesktopService $desktophelper=$desktopservice.read($HVservice, $pool.id) $desktophelper.getdesktopsettingshelper() | gm
As we saw in the second screenshot I need the desktopsettings and than Enabled
$desktophelper.getdesktopsettingshelper().getenabled()
To change the setting in the helper I need to use sethelper($False)
$desktophelper.getdesktopsettingshelper().setEnabled($False)
Now this has not been changed yet on the desktop pool itself, to do that we need to use desktopservice.update and I also show the result of the change.
$desktopservice.update($hvservice, $desktophelper) ($hvservice.Desktop.Desktop_Get($pool.id)).desktopsettings
And to reverse this
$desktophelper.getdesktopsettingshelper().setEnabled($True) $desktopservice.update($hvservice, $desktophelper) ($hvservice.Desktop.Desktop_Get($pool.id)).desktopsettings
Disabling provisioning uses the same methodology just in another spot.
To disable provisioning ( the | gm is not needed, it’s just there to show you whats’s in there):
($hvservice.Desktop.Desktop_Get($pool.id)).automateddesktopdata.virtualcenterprovisioningsettings $desktophelper.getAutomatedDesktopDataHelper().getVirtualCenterProvisioningSettingsHelper() | gm $desktophelper.getAutomatedDesktopDataHelper().getVirtualCenterProvisioningSettingsHelper().getenableprovisioning() $desktophelper.getAutomatedDesktopDataHelper().getVirtualCenterProvisioningSettingsHelper().setenableprovisioning($False) $desktopservice.update($hvservice, $desktophelper) ($hvservice.Desktop.Desktop_Get($pool.id)).automateddesktopdata.virtualcenterprovisioningsettings
And to revert it
$desktophelper.getAutomatedDesktopDataHelper().getVirtualCenterProvisioningSettingsHelper().setenableprovisioning($True) $desktopservice.update($hvservice, $desktophelper) ($hvservice.Desktop.Desktop_Get($pool.id)).automateddesktopdata.virtualcenterprovisioningsettings
For RDSH farms the process is similar some of the naming is just different. First to get the farm object
$farmqueryservice=new-object vmware.hv.queryserviceservice $farmdefn = New-Object VMware.Hv.QueryDefinition $filter = New-Object VMware.Hv.QueryFilterEquals -Property @{ 'memberName' = 'data.name'; 'value' = "Pod01-Farm01" } $farmdefn.filter=$filter $farmdefn.queryentitytype='FarmSummaryView' $farm = ($farmqueryservice.QueryService_Create($hvservice, $farmdefn)).results ($hvservice.Farm.farm_get($farm.id)).data
And to create the helper and disable the farm
$farmservice=New-Object VMware.Hv.FarmService $farmhelper=$farmservice.read($hvservice,$farm.id) $farmhelper.getDataHelper().setenabled($False) $farmservice.update($hvservice,$farmhelper) ($hvservice.Farm.farm_get($farm.id)).data
And in reverse 🙂
$farmhelper.getDataHelper().setenabled($True) $farmservice.update($hvservice,$farmhelper) ($hvservice.Farm.farm_get($farm.id)).data
And now the provisioning part
($hvservice.Farm.farm_get($farm.id)).automatedfarmdata.virtualcenterprovisioningsettings $farmhelper.getAutomatedFarmDataHelper().getvirtualcenterprovisioningsettingshelper().setenableprovisioning($False) $farmservice.update($hvservice,$farmhelper) ($hvservice.Farm.farm_get($farm.id)).automatedfarmdata.virtualcenterprovisioningsettings
Guess what?
$farmhelper.getAutomatedFarmDataHelper().getvirtualcenterprovisioningsettingshelper().setenableprovisioning($True) $farmservice.update($hvservice,$farmhelper) ($hvservice.Farm.farm_get($farm.id)).automatedfarmdata.virtualcenterprovisioningsettings