StoreFront

SDK StoreFront

Citrix StoreFront fournit un SDK basé sur plusieurs modules Microsoft Windows PowerShell version 2.0. Avec le SDK, vous pouvez effectuer les mêmes tâches qu’avec la console MMC StoreFront, ainsi que des tâches que vous ne pouvez pas réaliser avec la console seule.

Remarque :

Le SDK PowerShell n’est pas compatible avec PowerShell 6 ou version ultérieure.

Pour la référence du SDK, consultez SDK StoreFront.

Utiliser le SDK

Le SDK comprend un certain nombre de composants logiciels enfichables PowerShell installés automatiquement par l’assistant d’installation lorsque vous installez et configurez divers composants StoreFront.

Pour accéder aux cmdlets et les exécuter :

  1. Assurez-vous que la console de gestion StoreFront est fermée.

  2. Démarrez une invite de commande PowerShell ou Windows PowerShell ISE en tant qu’administrateur.

    Vous devez exécuter le shell ou le script en utilisant un membre du groupe des administrateurs locaux sur le serveur StoreFront.

  3. Pour utiliser les cmdlets du SDK dans des scripts, définissez la stratégie d’exécution dans PowerShell sur RemoteSigned. Pour plus d’informations sur la stratégie d’exécution PowerShell, consultez la documentation Microsoft.

Démarrer avec le SDK

Pour créer un script, suivez les étapes suivantes :

  1. Prenez l’un des exemples de SDK fournis et installés par StoreFront dans le dossier %ProgramFiles%\Citrix\Receiver StoreFront\PowerShellSDK\Examples.
  2. Pour vous aider à personnaliser votre propre script, examinez le script d’exemple afin de comprendre ce que fait chaque partie. Pour plus d’informations, consultez le cas d’utilisation de l’exemple, qui explique en détail les actions du script.
  3. Convertissez et adaptez les scripts d’exemple pour en faire un script plus exploitable. Pour ce faire :
    • Utilisez PowerShell ISE ou un outil similaire pour modifier le script.
    • Utilisez des variables pour attribuer des valeurs à réutiliser ou à modifier.
    • Supprimez toutes les commandes qui ne sont pas nécessaires.
    • Notez que les cmdlets StoreFront peuvent être identifiées par le préfixe STF.
    • Utilisez la cmdlet Get-Help en fournissant le nom de la cmdlet et le paramètre -Full pour plus d’informations sur une commande spécifique.

Exemples

Remarque :

Lors de la création d’un script, pour vous assurer d’obtenir toujours les dernières améliorations et corrections, Citrix® vous recommande de suivre la procédure décrite ci-dessus plutôt que de copier-coller les scripts d’exemple.

Exemples Description
Créer un déploiement simple Script : crée un déploiement simple avec un contrôleur StoreFront configuré avec un seul serveur XenDesktop.
Créer un déploiement d’accès à distance Script : s’appuie sur le script précédent pour ajouter l’accès à distance au déploiement.
Créer un déploiement d’accès à distance avec passerelle de lancement optimale Script : s’appuie sur le script précédent pour ajouter des passerelles de lancement optimales préférées pour une meilleure expérience utilisateur.

Exemple : Créer un déploiement simple

L’exemple suivant montre comment créer un déploiement simple configuré avec un contrôleur XenDesktop®.

Avant de commencer, assurez-vous de suivre les étapes détaillées dans Démarrer avec le SDK. Cet exemple peut être personnalisé à l’aide des méthodes décrites pour produire un script d’automatisation du déploiement de StoreFront.

Remarque :

Pour vous assurer d’obtenir toujours les dernières améliorations et corrections, Citrix vous recommande de suivre la procédure décrite dans ce document, plutôt que de copier-coller le script d’exemple.

Comprendre le script

Cette section explique ce que fait chaque partie du script produit par StoreFront. Cela vous aidera à personnaliser votre propre script.

  • Définit les exigences de gestion des erreurs et importe les modules StoreFront requis. Les importations ne sont pas nécessaires dans les versions plus récentes de PowerShell.

     Param(
         [Parameter(Mandatory=$true)]
         [Uri]$HostbaseUrl,
         [long]$SiteId = 1,
         [ValidateSet("XenDesktop","XenApp","AppController","VDIinaBox")]
         [string]$Farmtype = "XenDesktop",
         [Parameter(Mandatory=$true)]
         [string[]]$FarmServers,
         [string]$StoreVirtualPath = "/Citrix/Store",
         [bool]$LoadbalanceServers = $false,
         [int]$Port = 80,
         [int]$SSLRelayPort = 443,
         [ValidateSet("HTTP","HTTPS","SSL")]
         [string]$TransportType = "HTTP"
         )
         # Import StoreFront modules. Required for versions of PowerShell earlier than 3.0 that do not support autoloading
         Import-Module Citrix.StoreFront
         Import-Module Citrix.StoreFront.Stores
         Import-Module Citrix.StoreFront.Authentication
         Import-Module Citrix.StoreFront.WebReceiver
     <!--NeedCopy-->
    
  • Automatise le chemin virtuel des services d’authentification et Citrix Receiver pour Web en fonction du $StoreVirtualPath fourni. $StoreVirtualPath est équivalent à $StoreIISpath car les chemins virtuels sont toujours le chemin dans IIS. Par conséquent, dans PowerShell, ils ont une valeur telle que “/Citrix/Store”, “/Citrix/StoreWeb” ou “/Citrix/StoreAuth”.

     # Determine the Authentication and Receiver virtual path to use based of the Store
     $authenticationVirtualPath = "$($StoreIISPath.TrimEnd('/'))Auth"
     $receiverVirtualPath = "$($StoreVirtualPath.TrimEnd('/'))Web"
     <!--NeedCopy-->
    
  • Crée un nouveau déploiement s’il n’est pas déjà présent, en préparation de l’ajout des services StoreFront requis. -Confirm:$false supprime l’exigence de confirmer que le déploiement peut se poursuivre.

     # Determine if the deployment already exists
     $existingDeployment = Get-STFDeployment
     if(-not $existingDeployment)
     {
         # Install the required StoreFront components
         Add-STFDeployment -HostBaseUrl $HostbaseUrl -SiteId $SiteId -Confirm:$false
     }
     elseif($existingDeployment.HostbaseUrl -eq $HostbaseUrl)
     {
         # The deployment exists but it is configured to the desired hostbase url
         Write-Output "A deployment has already been created with the specified hostbase url on this server and will be used."
     }
     else
     {
         Write-Error "A deployment has already been created on this server with a different host base url."
     }
     <!--NeedCopy-->
    
  • Crée un nouveau service d’authentification s’il n’en existe pas au chemin virtuel spécifié. La méthode d’authentification par défaut (nom d’utilisateur et mot de passe) est activée.

     # Determine if the authentication service at the specified virtual path exists
     $authentication = Get-STFAuthenticationService -VirtualPath $authenticationVirtualPath
     if(-not $authentication)
     {
         # Add an Authentication service using the IIS path of the Store appended with Auth
         $authentication = Add-STFAuthenticationService $authenticationVirtualPath
     }
     else
     {
         Write-Output "An Authentication service already exists at the specified virtual path and will be used."
     }
     <!--NeedCopy-->
    
  • Crée le nouveau service de magasin configuré avec un contrôleur XenDesktop avec les serveurs définis dans le tableau $XenDesktopServers au chemin virtuel spécifié s’il n’en existe pas déjà un.

     # Determine if the store service at the specified virtual path exists
     $store = Get-STFStoreService -VirtualPath $StoreVirtualPath
     if(-not $store)
     {
     # Add a Store that uses the new Authentication service configured to publish resources from the supplied servers
     $store = Add-STFStoreService -VirtualPath $StoreVirtualPath -AuthenticationService $authentication -FarmName $Farmtype -FarmType $Farmtype -Servers $FarmServers -LoadBalance $LoadbalanceServers `
             -Port $Port -SSLRelayPort $SSLRelayPort -TransportType $TransportType
     }
     else
     {
         Write-Output "A Store service already exists at the specified virtual path and will be used. Farm and servers will be appended to this store."
         # Get the number of farms configured in the store
         $farmCount = (Get-STFStoreFarmConfiguration $store).Farms.Count
         # Append the farm to the store with a unique name
         Add-STFStoreFarm -StoreService $store -FarmName "Controller$($farmCount + 1)" -FarmType $Farmtype -Servers $FarmServers -LoadBalance $LoadbalanceServers -Port $Port `
             -SSLRelayPort $SSLRelayPort -TransportType $TransportType
     }
     <!--NeedCopy-->
    
  • Ajoute un service Citrix Receiver™ pour Web au chemin virtuel IIS spécifié pour accéder aux applications publiées dans le magasin créé ci-dessus.

     # Determine if the receiver service at the specified virtual path exists
     $receiver = Get-STFWebReceiverService -VirtualPath $receiverVirtualPath
     if(-not $receiver)
     {
         # Add a Receiver for Web site so users can access the applications and desktops in the published in the Store
         $receiver = Add-STFWebReceiverService -VirtualPath $receiverVirtualPath -StoreService $store
     }
     else
     {
         Write-Output "A Web Receiver service already exists at the specified virtual path and will be used."
     }
     <!--NeedCopy-->
    
  • Active les services XenApp pour le magasin afin que les clients Citrix Receiver ou Citrix Workspace app plus anciens puissent se connecter aux applications publiées.

     # Determine if PNA is configured for the Store service
     $storePnaSettings = Get-STFStorePna -StoreService $store
     if(-not $storePnaSettings.PnaEnabled)
     {
     # Enable XenApp services on the store and make it the default for this server
     Enable-STFStorePna -StoreService $store -AllowUserPasswordChange -DefaultPnaService
     }
     <!--NeedCopy-->
    

Exemple : Créer un déploiement d’accès à distance

L’exemple suivant s’appuie sur le script précédent pour ajouter un déploiement avec accès à distance.

Avant de commencer, assurez-vous de suivre les étapes détaillées dans Démarrer avec le SDK. Cet exemple peut être personnalisé à l’aide des méthodes décrites pour produire un script d’automatisation du déploiement de StoreFront.

Remarque :

Pour vous assurer d’obtenir toujours les dernières améliorations et corrections, Citrix vous recommande de suivre la procédure décrite dans ce document, plutôt que de copier-coller le script d’exemple.

Comprendre le script

Cette section explique ce que fait chaque partie du script produit par StoreFront. Cela vous aidera à personnaliser votre propre script.

  • Définit les exigences de gestion des erreurs et importe les modules StoreFront requis. Les importations ne sont pas nécessaires dans les versions plus récentes de PowerShell.

     Param(
         [Parameter(Mandatory=$true)]
         [Uri]$HostbaseUrl,
         [Parameter(Mandatory=$true)]
         [long]$SiteId = 1,
         [string]$Farmtype = "XenDesktop",
         [Parameter(Mandatory=$true)]
         [string[]]$FarmServers,
         [string]$StoreVirtualPath = "/Citrix/Store",
         [bool]$LoadbalanceServers = $false,
         [int]$Port = 80,
         [int]$SSLRelayPort = 443,
         [ValidateSet("HTTP","HTTPS","SSL")]
         [string]$TransportType = "HTTP",
         [Parameter(Mandatory=$true)]
         [Uri]$GatewayUrl,
         [Parameter(Mandatory=$true)]
         [Uri]$GatewayCallbackUrl,
         [Parameter(Mandatory=$true)]
         [string[]]$GatewaySTAUrls,
         [string]$GatewaySubnetIP,
         [Parameter(Mandatory=$true)]
         [string]$GatewayName
     )
     Set-StrictMode -Version 2.0
    
     # Any failure is a terminating failure.
     $ErrorActionPreference = 'Stop'
     $ReportErrorShowStackTrace = $true
     $ReportErrorShowInnerException = $true
     # Import StoreFront modules. Required for versions of PowerShell earlier than 3.0 that do not support autoloading
     Import-Module Citrix.StoreFront
     Import-Module Citrix.StoreFront.Stores
     Import-Module Citrix.StoreFront.Roaming
     <!--NeedCopy-->
    
  • Créez un déploiement StoreFront à accès interne en appelant le script des exemples précédents. Le déploiement de base sera étendu pour prendre en charge l’accès à distance.

     # Create a simple deployment by invoking the SimpleDeployment example
     $scriptDirectory = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
     $scriptPath = Join-Path $scriptDirectory "SimpleDeployment.ps1"
     & $scriptPath -HostbaseUrl $HostbaseUrl -SiteId $SiteId -FarmServers $FarmServers -StoreVirtualPath $StoreVirtualPath -Farmtype $Farmtype `
         -LoadbalanceServers $LoadbalanceServers -Port $Port  -SSLRelayPort $SSLRelayPort -TransportType $TransportType
     <!--NeedCopy-->
    
  • Obtient les services créés dans le déploiement simple, car ils doivent être mis à jour pour prendre en charge le scénario d’accès à distance.

     # Determine the Authentication and Receiver sites based on the Store
     $store = Get-STFStoreService -VirtualPath $StoreVirtualPath
     $authentication = Get-STFAuthenticationService -StoreService $store
     $receiverForWeb = Get-STFWebReceiverService -StoreService $store
     <!--NeedCopy-->
    
  • Active CitrixAGBasic sur le service Citrix Receiver pour Web requis pour l’accès à distance à l’aide de Citrix Gateway. Obtenez la méthode d’authentification CitrixAGBasic et ExplicitForms de Citrix Receiver pour Web à partir des protocoles pris en charge.

     # Get the Citrix Receiver for Web CitrixAGBasic and ExplicitForms authentication method from the supported protocols
     # Included for demonstration purposes as the protocol name can be used directly if known
     $receiverMethods = Get-STFWebReceiverAuthenticationMethodsAvailable | Where-Object { $_ -match "Explicit" -or $_ -match "CitrixAG" }
     # Enable CitrixAGBasic in Receiver for Web (required for remote access)
     Set-STFWebReceiverService $receiverForWeb -AuthenticationMethods $receiverMethods
     <!--NeedCopy-->
    
  • Active CitrixAGBasic sur le service d’authentification. Ceci est requis pour l’accès à distance.

     # Get the CitrixAGBasic authentication method from the protocols installed.
     # Included for demonstration purposes as the protocol name can be used directly if known
     $citrixAGBasic = Get-STFAuthenticationProtocolsAvailable | Where-Object { $_ -match "CitrixAGBasic" }
     # Enable CitrixAGBasic in the Authentication service (required for remote access)
     Enable-STFAuthenticationServiceProtocol -AuthenticationService $authentication -Name $citrixAGBasic
     <!--NeedCopy-->
    
  • Ajoute une nouvelle passerelle d’accès à distance, en ajoutant l’adresse IP de sous-réseau facultative si fournie, et l’enregistre auprès du magasin pour un accès à distance.

     # Add a new Gateway used to access the new store remotely
     Add-STFRoamingGateway -Name "NetScaler10x" -LogonType Domain -Version Version10_0_69_4 -GatewayUrl $GatewayUrl '
     -CallbackUrl $GatewayCallbackUrl -SecureTicketAuthorityUrls $GatewaySTAUrls
     # Get the new Gateway from the configuration (Add-STFRoamingGateway will return the new Gateway if -PassThru is supplied as a parameter)
     $gateway = Get-STFRoamingGateway -Name $GatewayName
     # If the gateway subnet was provided then set it on the gateway object
     if($GatewaySubnetIP)
     {
         Set-STFRoamingGateway -Gateway $gateway -SubnetIPAddress $GatewaySubnetIP
     }
     # Register the Gateway with the new Store
     Register-STFStoreGateway -Gateway $gateway -StoreService $store -DefaultGateway
     <!--NeedCopy-->
    

Exemple : Créer un déploiement d’accès à distance avec passerelle de lancement optimale

L’exemple suivant s’appuie sur le script précédent pour ajouter un déploiement avec accès à distance via une passerelle de lancement optimale.

Avant de commencer, assurez-vous de suivre les étapes détaillées dans Démarrer avec le SDK. Cet exemple peut être personnalisé à l’aide des méthodes décrites pour produire un script d’automatisation du déploiement de StoreFront.

Remarque :

Pour vous assurer d’obtenir toujours les dernières améliorations et corrections, Citrix vous recommande de suivre la procédure décrite dans ce document, plutôt que de copier-coller le script d’exemple.

Comprendre le script

Cette section explique ce que fait chaque partie du script produit par StoreFront. Cela vous aidera à personnaliser votre propre script.

  • Définit les exigences de gestion des erreurs et importe les modules StoreFront requis. Les importations ne sont pas nécessaires dans les versions plus récentes de PowerShell.

     Param(
         [Parameter(Mandatory=$true)]
         [Uri]$HostbaseUrl,
         [long]$SiteId = 1,
         [string]$Farmtype = "XenDesktop",
         [Parameter(Mandatory=$true)]
         [string[]]$FarmServers,
         [string]$StoreVirtualPath = "/Citrix/Store",
         [bool]$LoadbalanceServers = $false,
         [int]$Port = 80,
         [int]$SSLRelayPort = 443,
         [ValidateSet("HTTP","HTTPS","SSL")]
         [string]$TransportType = "HTTP",
         [Parameter(Mandatory=$true)]
         [Uri]$GatewayUrl,
         [Parameter(Mandatory=$true)]
         [Uri]$GatewayCallbackUrl,
         [Parameter(Mandatory=$true)]
         [string[]]$GatewaySTAUrls,
         [string]$GatewaySubnetIP,
         [Parameter(Mandatory=$true)]
         [string]$GatewayName,
         [Parameter(Mandatory=$true)]
         [Uri]$OptimalGatewayUrl,
         [Parameter(Mandatory=$true)]
         [string[]]$OptimalGatewaySTAUrls,
         [Parameter(Mandatory=$true)]
         [string]$OptimalGatewayName
     )
     Set-StrictMode -Version 2.0
     # Any failure is a terminating failure.
     $ErrorActionPreference = 'Stop'
     $ReportErrorShowStackTrace = $true
     $ReportErrorShowInnerException = $true
     # Import StoreFront modules. Required for versions of PowerShell earlier than 3.0 that do not support autoloading
     Import-Module Citrix.StoreFront
     Import-Module Citrix.StoreFront.Stores
     Import-Module Citrix.StoreFront.Roaming
     <!--NeedCopy-->
    
  • Appelle le script de déploiement d’accès à distance pour configurer le déploiement de base et ajouter l’accès à distance.

     # Create a remote access deployment
     $scriptDirectory = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
     $scriptPath = Join-Path $scriptDirectory "RemoteAccessDeployment.ps1"
     & $scriptPath -HostbaseUrl $HostbaseUrl -SiteId $SiteId -FarmServers $FarmServers -StoreVirtualPath $StoreVirtualPath -Farmtype $Farmtype `
         -LoadbalanceServers $LoadbalanceServers -Port $Port  -SSLRelayPort $SSLRelayPort -TransportType $TransportType `
         -GatewayUrl $GatewayUrl -GatewayCallbackUrl $GatewayCallbackUrl -GatewaySTAUrls $GatewaySTAUrls -GatewayName $GatewayName
     <!--NeedCopy-->
    
  • Ajoute la passerelle de lancement optimale préférée et l’obtient de la liste des passerelles configurées.

     # Add a new Gateway used for remote HDX access to desktops and apps
     $gateway = Add-STFRoamingGateway -Name $OptimalGatewayName -LogonType UsedForHDXOnly -GatewayUrl $OptimalGatewayUrl -SecureTicketAuthorityUrls $OptimalGatewaySTAUrls -PassThru
     <!--NeedCopy-->
    
  • Obtient le service de magasin pour utiliser la passerelle optimale, l’enregistre en l’attribuant aux lancements depuis la ferme nommée.

     # Get the Store configured by SimpleDeployment.ps1
     $store = Get-STFStoreService -VirtualPath $StoreVirtualPath
     # Register the Gateway with the new Store for launch against all of the farms (currently just one)
     $farmNames = @($store.FarmsConfiguration.Farms | foreach { $_.FarmName })
     Register-STFStoreOptimalLaunchGateway -Gateway $gateway -StoreService $store -FarmName $farmNames
     <!--NeedCopy-->
    
SDK StoreFront