When you call the function, run it without the "#". I re-arranged some things so copy this one and try it now: #Script by Jose Rodriguez #https://get-cj.com #Uses ONLY the Horizon View ...
See more...
When you call the function, run it without the "#". I re-arranged some things so copy this one and try it now: #Script by Jose Rodriguez #https://get-cj.com #Uses ONLY the Horizon View API to refresh a set of desktops or a single desktop. function refresh-ViewDesktop { [CmdletBinding()] [OutputType([PSCustomObject])] param( [string[]]$machines, [string]$viewserver ) $cred = Get-Credential $hvServer = Connect-HVServer -server $viewserver -Credential $cred $hvServices = $hvServer.ExtensionData $queryService = New-Object VMware.Hv.QueryServiceService $query = New-Object VMware.Hv.QueryDefinition $query.queryEntityType = 'MachineNamesView' [VMware.Hv.QueryFilter []] $filters = @() foreach ($machine in $machines){ $filters += new-object VMware.Hv.QueryFilterEquals -property @{'memberName' = 'base.name'; 'value' = $machine} } $orFilter = new-object VMware.Hv.QueryFilterOr -property @{'filters' = $filters} $query.Filter = $orFilter $queryResults = $queryService.QueryService_Create($hvServices,$query) $finalmachine = @() foreach ($result in $queryResults.Results){ [VMware.Hv.MachineNamesView]$machineNamesView = $result $properties = @{ machineid = $machineNamesView.id names = $machineNamesView.base.name desktopId = $machineNamesView.base.Desktop } $finalmachine += New-Object -TypeName pscustomobject -Property $properties } $desktopService = New-Object VMware.Hv.DesktopService $machineService = New-Object VMware.Hv.MachineService foreach($object in $finalmachine){ $desktoprefreshSpec = New-Object VMware.Hv.DesktopRefreshSpec $desktoprefresheSpecHelper = New-Object VMware.Hv.DesktopService+DesktopRefreshSpecHelper $desktoprefreshSpec.Machines = $object.machineid $desktoprefreshSpec.LogoffSetting = $desktoprefresheSpecHelper.LOGOFF_SETTING_FORCE_LOGOFF $desktopService.Desktop_Refresh($hvServices, $machineNamesView.base.Desktop,$desktoprefreshSpec) Write-Output "" Write-Output "Refreshing Machines" $($object.names) } } And you would run it like this: $machines = ('B-W10-01', 'B-W10-02') Refresh-ViewDesktop -machines $machines -viewserver 'vc.abc.com'