Modules PowerShell StoreFront
Citrix StoreFront fournit un certain nombre de modules Microsoft Windows PowerShell version 2.0 qui sont inclus lors de l’installation de StoreFront. Grâce à ces modules, vous pouvez effectuer les mêmes tâches qu’avec la console de gestion StoreFront, ainsi que des tâches que vous ne pouvez pas réaliser avec la console seule.
Remarque :
Les modules PowerShell StoreFront ne sont pas compatibles avec PowerShell 6 ou version ultérieure.
Pour la référence des modules PowerShell, consultez la documentation développeur StoreFront.
Démarrer
-
Assurez-vous que la console de gestion StoreFront est fermée.
-
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.
-
Pour utiliser les cmdlets dans les scripts, définissez la politique d’exécution dans PowerShell sur RemoteSigned. Pour plus d’informations sur la politique d’exécution PowerShell, consultez la documentation Microsoft.
-
Vous pouvez utiliser les scripts d’exemple comme point de départ.
-
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.
Chemin virtuel
Les cmdlets permettant d’obtenir ou de créer un magasin, un site web ou des services d’authentification prennent un paramètre VirtualPath. Il s’agit du chemin où l’application est hébergée dans IIS. Le chemin du magasin et du site web peut également être trouvé dans la console de gestion StoreFront. Généralement, par convention, le chemin d’authentification est le même que le chemin du magasin avec le suffixe Auth et le site web est le même que le chemin du magasin avec le suffixe Web. Par exemple, pour le chemin virtuel du magasin /Citrix/Store, le service d’authentification a le chemin /Citrix/StoreAuth et le site web a le chemin /Citrix/StoreWeb.
Par exemple, pour obtenir un service de magasin dont le chemin est /Citrix/Store, exécutez la commande :
Get-STFStoreService -VirtualPath '/Citrix/Store'
<!--NeedCopy-->
Si vous omettez le VirtualPath, tous les services sont renvoyés. S’il n’y a qu’un seul service, PowerShell le traite comme un objet unique.
ID de site
Certaines cmdlets incluent un paramètre SiteId. Si vous avez plusieurs déploiements sur le même serveur sur différents sites IIS, vous devez spécifier le SiteId. Si vous n’avez qu’un seul site, le paramètre n’est pas requis.
Scripts d’exemple
StoreFront inclut quelques scripts d’exemple qui se trouvent dans le dossier %ProgramFiles%\Citrix\Receiver StoreFront\PowerShellSDK\Examples. Vous pouvez les utiliser comme modèles pour créer vos propres scripts.
- Utilisez PowerShell ISE, Visual Studio Code 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.
| Exemples | Description |
|---|---|
| Créer un déploiement simple | Script : crée un déploiement simple avec un contrôleur StoreFront configuré avec un seul site CVAD. |
| 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 une 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. |
Créer un déploiement simple
L’exemple suivant montre comment créer un déploiement simple configuré avec un site CVAD.
Avant de commencer, assurez-vous de suivre les étapes détaillées dans Démarrer. Cet exemple peut être personnalisé pour produire un script d’automatisation du déploiement de StoreFront.
Cette section explique ce que fait chaque partie du script. 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 modernes 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
$StoreVirtualPathfourni.$StoreVirtualPathest équivalent àStoreIISPathcar les chemins virtuels sont toujours le chemin dans IIS. Par conséquent, dans PowerShell, ils ont une valeur telle que/Citrix/Store,/Citrix/StoreWebou/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 site (également appelé ferme) avec les serveurs définis dans le tableau $XenDesktopServers au chemin virtuel spécifié s’il n’existe pas déjà.
# 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 site 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. Cet exemple peut être personnalisé en utilisant les méthodes décrites pour produire un script d’automatisation du déploiement de StoreFront.
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 modernes 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ée un déploiement StoreFront d’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. Obtient 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, ajoute l’adresse IP de sous-réseau facultative si elle est 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 une 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. Cet exemple peut être personnalisé en utilisant les méthodes décrites pour produire un script d’automatisation du déploiement de StoreFront.
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 modernes 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 le site nommé.
# 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-->