Added Set-HVApplication to update ApplicationInfo
This commit is contained in:
@@ -12161,7 +12161,7 @@ Function New-HVManualApplication {
|
|||||||
Whether or not the other file types supported by this application should be allowed to automatically update to reflect changes reported by the agent.
|
Whether or not the other file types supported by this application should be allowed to automatically update to reflect changes reported by the agent.
|
||||||
|
|
||||||
.PARAMETER GlobalApplicationEntitlement
|
.PARAMETER GlobalApplicationEntitlement
|
||||||
Specify the Display Name of a Global Application Entitlement to add this Application Pool to.
|
The name of a Global Application Entitlement to associate this Application pool with.
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
New-HVManualApplication -Name 'App1' -DisplayName 'DisplayName' -Description 'ApplicationDescription' -ExecutablePath "PathOfTheExecutable" -Version 'AppVersion' -Publisher 'PublisherName' -Farm 'FarmName'
|
New-HVManualApplication -Name 'App1' -DisplayName 'DisplayName' -Description 'ApplicationDescription' -ExecutablePath "PathOfTheExecutable" -Version 'AppVersion' -Publisher 'PublisherName' -Farm 'FarmName'
|
||||||
@@ -12497,6 +12497,240 @@ Function New-HVPreInstalledApplication {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Set-HVApplication {
|
||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Updates settings for an existing Application Pool.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Updates settings for an existing Application Pool. It does not update the Application Icon. See Set-HVApplicationIcon for a function to update icons. This function specifically targets ApplicationInfo.Data and Application.ExecutionData properties.
|
||||||
|
|
||||||
|
.PARAMETER HvServer
|
||||||
|
View API service object of Connect-HVServer cmdlet.
|
||||||
|
|
||||||
|
.PARAMETER Name
|
||||||
|
The Application name is the unique identifier used to identify this Application. This cannot be updated but is used to specify which application should be updated.
|
||||||
|
|
||||||
|
.PARAMETER DisplayName
|
||||||
|
The display name is the name that users will see when they connect to view client. If the display name is left blank, it defaults to Name.
|
||||||
|
|
||||||
|
.PARAMETER Description
|
||||||
|
The description is a set of notes about the Application.
|
||||||
|
|
||||||
|
.PARAMETER GlobalApplicationEntitlement
|
||||||
|
The name of a Global Application Entitlement to associate this Application pool with.
|
||||||
|
|
||||||
|
.PARAMETER ExecutablePath
|
||||||
|
Path to Application executable.
|
||||||
|
|
||||||
|
.PARAMETER Version
|
||||||
|
Application version.
|
||||||
|
|
||||||
|
.PARAMETER Publisher
|
||||||
|
Application publisher.
|
||||||
|
|
||||||
|
.PARAMETER Enabled
|
||||||
|
Indicates if Application is enabled.
|
||||||
|
|
||||||
|
.PARAMETER EnablePreLaunch
|
||||||
|
Application can be pre-launched if value is true.
|
||||||
|
|
||||||
|
.PARAMETER ConnectionServerRestrictions
|
||||||
|
Connection server restrictions. This is a list of tags that access to the application is restricted to. Empty/Null list means that the application can be accessed from any connection server.
|
||||||
|
|
||||||
|
.PARAMETER CategoryFolderName
|
||||||
|
Name of the category folder in the user's OS containing a shortcut to the application. Unset if the application does not belong to a category.
|
||||||
|
|
||||||
|
.PARAMETER ClientRestrictions
|
||||||
|
Client restrictions to be applied to Application. Currently it is valid for RDSH pools.
|
||||||
|
|
||||||
|
.PARAMETER ShortcutLocations
|
||||||
|
Locations of the category folder in the user's OS containing a shortcut to the desktop. The value must be set if categoryFolderName is provided.
|
||||||
|
|
||||||
|
.PARAMETER StartFolder
|
||||||
|
Starting folder for Application.
|
||||||
|
|
||||||
|
.PARAMETER Args
|
||||||
|
Parameters to pass to application when launching.
|
||||||
|
|
||||||
|
.PARAMETER Farm
|
||||||
|
Farm name.
|
||||||
|
|
||||||
|
.PARAMETER AutoUpdateFileTypes
|
||||||
|
Whether or not the file types supported by this application should be allowed to automatically update to reflect changes reported by the agent.
|
||||||
|
|
||||||
|
.PARAMETER AutoUpdateOtherFileTypes
|
||||||
|
Whether or not the other file types supported by this application should be allowed to automatically update to reflect changes reported by the agent.
|
||||||
|
|
||||||
|
.PARAMETER GlobalApplicationEntitlement
|
||||||
|
Specify the Display Name of a Global Application Entitlement to add this Application Pool to.
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
New-HVManualApplication -Name 'App1' -DisplayName 'DisplayName' -Description 'ApplicationDescription' -ExecutablePath "PathOfTheExecutable" -Version 'AppVersion' -Publisher 'PublisherName' -Farm 'FarmName'
|
||||||
|
Creates a manual application App1 in the farm specified.
|
||||||
|
|
||||||
|
.OUTPUTS
|
||||||
|
A success message is displayed when done.
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Author : Matt Frey
|
||||||
|
Author email : mfrey@vmware.com
|
||||||
|
Version : 1.0
|
||||||
|
|
||||||
|
===Tested Against Environment====
|
||||||
|
Horizon View Server Version : 7.8.0
|
||||||
|
PowerCLI Version : PowerCLI 11.1
|
||||||
|
PowerShell Version : 5.1
|
||||||
|
#>
|
||||||
|
param (
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[VMware.VimAutomation.HorizonView.Impl.V1.ViewServerImpl]$HvServer,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $True, ValueFromPipeline = $True, Position = 0)]
|
||||||
|
[string][ValidateLength(1,64)]$Name,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[String][ValidateLength(1,256)]$DisplayName = $Name,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[String][ValidateLength(1,1024)]$Description,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[String]$ExecutablePath,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[String]$Version,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[String]$Publisher,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[Boolean]$Enabled = $True,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[Boolean]$EnablePreLaunch=$False,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[string[]]$ConnectionServerRestrictions,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True, ParameterSetName = 'categoryFolderName')]
|
||||||
|
[String][ValidateRange(1,64)]$CategoryFolderName,
|
||||||
|
|
||||||
|
#Below Parameter is for Client restrictions to be applied to Application. Currently it is valid for RDSH pools.
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[Boolean]$clientRestrictions = $False,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True, ParameterSetName = 'categoryFolderName')]
|
||||||
|
[String[]]$ShortcutLocations,
|
||||||
|
|
||||||
|
#Below parameters are for ExecutionData, moved ExecutablePath, Version and Publisher to above from this.
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[String]$StartFolder,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[String]$Args,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[Boolean]$AutoUpdateFileTypes = $True,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False, ValueFromPipeline = $True)]
|
||||||
|
[Boolean]$AutoUpdateOtherFileTypes = $True,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $False)]
|
||||||
|
[String]$GlobalApplicationEntitlement = $null
|
||||||
|
)
|
||||||
|
begin {
|
||||||
|
$services = Get-ViewAPIService -HvServer $HvServer
|
||||||
|
if ($null -eq $services) {
|
||||||
|
Write-Error "Could not retrieve View API services from connection object"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
process {
|
||||||
|
$App = Get-HVApplication -ApplicationName $Name -HvServer $HvServer
|
||||||
|
if (!$App) {
|
||||||
|
Write-Error "Application $App not found. Please check the syntax or spelling."
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
$updates = @()
|
||||||
|
if ($PSBoundParameters.ContainsKey("DisplayName")) {
|
||||||
|
$updates += Get-MapEntry -key 'data.displayName' -value $DisplayName
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("Description")) {
|
||||||
|
$updates += Get-MapEntry -key 'data.description' -value $Description
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("Enabled")) {
|
||||||
|
$updates += Get-MapEntry -key 'data.enabled' -value $Enabled
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("EnableAntiAffinityRules")) {
|
||||||
|
$updates += Get-MapEntry -key 'data.enableAntiAffinityRules' -value $EnableAntiAffinityRules
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("EnableAntiAffinityPatterns")) {
|
||||||
|
$updates += Get-MapEntry -key 'data.enableAntiAffinityPatterns' -value $EnableAntiAffinityPatterns
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("EnableAntiAffinityCount")) {
|
||||||
|
$updates += Get-MapEntry -key 'data.enableAntiAffinityCount' -value $EnableAntiAffinityCount
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("EnablePreLaunch")) {
|
||||||
|
$updates += Get-MapEntry -key 'data.enablePreLaunch' -value $EnablePreLaunch
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("ConnectionServerRestrictions")) {
|
||||||
|
$updates += Get-MapEntry -key 'data.connectionServerRestrictions' -value $ConnectionServerRestrictions
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("EnableAntiAffinityRules")) {
|
||||||
|
$updates += Get-MapEntry -key 'data.enableAntiAffinityRules' -value $EnableAntiAffinityRules
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("CategoryFolderName")) {
|
||||||
|
$updates += Get-MapEntry -key 'data.categoryFolderName' -value $CategoryFolderName
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("ClientRestrictions")) {
|
||||||
|
$updates += Get-MapEntry -key 'data.clientRestrictions' -value $ClientRestrictions
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("ShortcutLocations")) {
|
||||||
|
$updates += Get-MapEntry -key 'data.shortcutLocations' -value $ShortcutLocations
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("GlobalApplicationEntitlement")) {
|
||||||
|
$GlobalApplicationEntitlementInfo = Get-HVGlobalEntitlement -DisplayName $GlobalApplicationEntitlement
|
||||||
|
$GlobalApplicationEntitlementId = $GlobalApplicationEntitlementInfo.Id
|
||||||
|
$updates += Get-MapEntry -key 'data.globalApplicationEntitlement' -value $GlobalApplicationEntitlementId
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($PSBoundParameters.ContainsKey("ExecutablePath")) {
|
||||||
|
$updates += Get-MapEntry -key 'executionData.executablePath' -value $ExecutablePath
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("Version")) {
|
||||||
|
$updates += Get-MapEntry -key 'executionData.version' -value $Version
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("Publisher")) {
|
||||||
|
$updates += Get-MapEntry -key 'executionData.publisher' -value $Publisher
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("StartFolder")) {
|
||||||
|
$updates += Get-MapEntry -key 'executionData.startFolder' -value $StartFolder
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("Args")) {
|
||||||
|
$updates += Get-MapEntry -key 'executionData.args' -value $Args
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("AutoUpdateFileTypes")) {
|
||||||
|
$updates += Get-MapEntry -key 'executionData.autoUpdateFileTypes' -value $AutoUpdateFileTypes
|
||||||
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey("AutoUpdateOtherFileTypes")) {
|
||||||
|
$updates += Get-MapEntry -key 'executionData.autoUpdateOtherFileTypes' -value $AutoUpdateOtherFileTypes
|
||||||
|
}
|
||||||
|
|
||||||
|
$AppService = New-Object VMware.Hv.ApplicationService
|
||||||
|
$AppService.Application_Update($services,$App.Id,$updates)
|
||||||
|
if ($?) {
|
||||||
|
Write-Host "Application '$Name' updated successfully"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Write-Host "Application update to '$Name' has failed. $_"
|
||||||
|
}
|
||||||
|
end {
|
||||||
|
[System.GC]::Collect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Object related
|
# Object related
|
||||||
Export-ModuleMember -Function Get-HVMachine, Get-HVMachineSummary, Get-HVQueryResult, Get-HVQueryFilter, Get-HVInternalName
|
Export-ModuleMember -Function Get-HVMachine, Get-HVMachineSummary, Get-HVQueryResult, Get-HVQueryFilter, Get-HVInternalName
|
||||||
# RDS Farm related
|
# RDS Farm related
|
||||||
@@ -12504,7 +12738,7 @@ Export-ModuleMember -Function Get-HVFarmSummary, Start-HVFarm, Start-HVPool, New
|
|||||||
# Desktop Pool related
|
# Desktop Pool related
|
||||||
Export-ModuleMember -Function Get-HVPoolSummary, New-HVPool, Remove-HVPool, Get-HVPool, Set-HVPool, Get-HVPoolSpec, Add-HVDesktop
|
Export-ModuleMember -Function Get-HVPoolSummary, New-HVPool, Remove-HVPool, Get-HVPool, Set-HVPool, Get-HVPoolSpec, Add-HVDesktop
|
||||||
# Application Pool related
|
# Application Pool related
|
||||||
Export-ModuleMember -Function Get-HVApplication, Remove-HVApplication, New-HVManualApplication, Get-HVPreInstalledApplication, New-HVPreInstalledApplication
|
Export-ModuleMember -Function Get-HVApplication, Remove-HVApplication, New-HVManualApplication, Get-HVPreInstalledApplication, New-HVPreInstalledApplication, Set-HVApplication
|
||||||
# Entitlement related
|
# Entitlement related
|
||||||
Export-ModuleMember -Function New-HVEntitlement,Get-HVEntitlement,Remove-HVEntitlement
|
Export-ModuleMember -Function New-HVEntitlement,Get-HVEntitlement,Remove-HVEntitlement
|
||||||
Export-ModuleMember -Function Set-HVMachine, Reset-HVMachine, Remove-HVMachine
|
Export-ModuleMember -Function Set-HVMachine, Reset-HVMachine, Remove-HVMachine
|
||||||
|
|||||||
Reference in New Issue
Block a user