StoreFront PowerShell-Module

Last published : Nov 13, 2026
Citrix StoreFront bietet eine Reihe von Microsoft Windows PowerShell Version 2.0-Modulen, die bei der Installation von StoreFront enthalten sind. Mit den Modulen können Sie dieselben Aufgaben ausführen wie mit der StoreFront-Verwaltungskonsole, sowie Aufgaben, die Sie mit der Konsole allein nicht erledigen können.
Hinweis:
Die StoreFront PowerShell-Module sind nicht mit PowerShell 6 oder höher kompatibel.
Eine Referenz zu den PowerShell-Modulen finden Sie in der StoreFront-Entwicklerdokumentation.

Erste Schritte

  1. Stellen Sie sicher, dass die StoreFront-Verwaltungskonsole geschlossen ist.
  2. Starten Sie eine PowerShell-Befehlszeilenaufforderung oder die Windows PowerShell ISE als Administrator.
    Sie müssen die Shell oder das Skript mit einem Mitglied der lokalen Administratorengruppe auf dem StoreFront-Server ausführen.
  3. Um Cmdlets in Skripts zu verwenden, setzen Sie die Ausführungsrichtlinie in PowerShell auf RemoteSigned. Weitere Informationen zur PowerShell-Ausführungsrichtlinie finden Sie in der Microsoft-Dokumentation.
  4. Sie können die Beispielskripts als Ausgangspunkt verwenden.
  5. Verwenden Sie das Cmdlet Get-Help mit dem Cmdlet-Namen und dem Parameter -Full, um weitere Informationen zu einem bestimmten Befehl zu erhalten.

Virtueller Pfad

Cmdlets zum Abrufen oder Erstellen eines Stores, einer Website oder von Authentifizierungsdiensten verwenden einen VirtualPath-Parameter. Dies ist der Pfad, unter dem die Anwendung in IIS gehostet wird. Der Store- und Website-Pfad kann auch in der StoreFront-Verwaltungskonsole gefunden werden. Typischerweise ist der Authentifizierungspfad konventionsgemäß derselbe wie der Store-Pfad mit dem Suffix Auth, und die Website ist derselbe wie der Store-Pfad mit dem Suffix Web. Z. B. für den virtuellen Store-Pfad /Citrix/Store hat der Authentifizierungsdienst den Pfad /Citrix/StoreAuth und die Website den Pfad /Citrix/StoreWeb.
Z. B. um einen Store-Dienst mit dem Pfad /Citrix/Store abzurufen, führen Sie den Befehl aus:
Get-STFStoreService -VirtualPath '/Citrix/Store'
Wenn Sie den VirtualPath weglassen, werden alle Dienste zurückgegeben. Wenn nur ein Dienst vorhanden ist, behandelt PowerShell dies als einzelnes Objekt.

Site-ID

Einige Cmdlets enthalten einen SiteId-Parameter. Wenn Sie mehrere Bereitstellungen auf demselben Server auf verschiedenen IIS-Sites haben, müssen Sie den SiteId angeben. Wenn Sie nur eine Site haben, ist der Parameter nicht erforderlich.

Beispielskripte

StoreFront enthält einige Beispielskripte, die sich im Ordner %ProgramFiles%\Citrix\Receiver StoreFront\PowerShellSDK\Examples befinden. Sie können diese als Vorlagen für die Erstellung Ihrer eigenen Skripte verwenden.
-  Use the PowerShell ISE, Visual Studio Code or a similar tool to edit the script.
-  Use variables to assign values that are to be reused or modified.
-  Remove any commands that are not required.
-  Note that StoreFront cmdlets can be identified by the prefix STF.
Beispiele Beschreibung
Einfache Bereitstellung erstellen Skript: Erstellt eine einfache Bereitstellung mit einem StoreFront-Controller, der mit einer einzelnen CVAD-Site konfiguriert ist.
Bereitstellung für Remotezugriff erstellen Skript: Baut auf dem vorherigen Skript auf, um der Bereitstellung Remotezugriff hinzuzufügen.
Bereitstellung für Remotezugriff mit optimalem Start-Gateway erstellen Skript: Baut auf dem vorherigen Skript auf, um bevorzugte optimale Start-Gateways für eine bessere Benutzererfahrung hinzuzufügen.

Einfache Bereitstellung erstellen

Das folgende Beispiel zeigt, wie eine einfache Bereitstellung mit einer CVAD-Site erstellt wird.
Bevor Sie beginnen, stellen Sie sicher, dass Sie die Schritte unter Erste Schritte befolgen. Dieses Beispiel kann angepasst werden, um ein Skript zur Automatisierung der StoreFront-Bereitstellung zu erstellen.
Dieser Abschnitt erklärt, was jeder Teil des Skripts bewirkt. Dies hilft Ihnen bei der Anpassung Ihres eigenen Skripts.
  • Legt die Anforderungen für die Fehlerbehandlung fest und importiert die erforderlichen StoreFront-Module. In modernen PowerShell-Versionen sind Importe nicht erforderlich.
    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
  • Automatisiert den virtuellen Pfad der Authentifizierungs- und Citrix Receiver für Web-Dienste basierend auf dem angegebenen $StoreVirtualPath. $StoreVirtualPath entspricht StoreIISPath, da virtuelle Pfade immer der Pfad in IIS sind. Daher haben sie in PowerShell einen Wert wie /Citrix/Store, /Citrix/StoreWeb oder /Citrix/StoreAuth.
    # Determine the Authentication and Receiver virtual path to use based of the Store
    $authenticationVirtualPath = "$($StoreIISPath.TrimEnd('/'))Auth"
    $receiverVirtualPath = "$($StoreVirtualPath.TrimEnd('/'))Web"
  • Erstellt eine neue Bereitstellung, falls noch keine vorhanden ist, zur Vorbereitung auf das Hinzufügen der erforderlichen StoreFront-Dienste. -Confirm:$false unterdrückt die Anforderung, die Fortsetzung der Bereitstellung zu bestätigen.
    # 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."
    }
  • Erstellt einen neuen Authentifizierungsdienst, falls keiner unter dem angegebenen virtuellen Pfad existiert. Die Standardauthentifizierungsmethode mit Benutzername und Kennwort ist aktiviert.
    # 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."
    }
  • Erstellt den neuen Store-Dienst, der mit einer Site (auch als Farm bekannt) konfiguriert ist, mit den in dem Array $XenDesktopServers definierten Servern unter dem angegebenen virtuellen Pfad, falls noch keiner existiert.
    # 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
    }
  • Fügt eine Website unter dem angegebenen virtuellen IIS-Pfad hinzu, um auf Anwendungen zuzugreifen, die im oben erstellten Store veröffentlicht wurden.
    # 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."
    }
  • Aktiviert XenApp-Dienste für den Store, damit ältere Citrix Receiver- oder Citrix Workspace-App-Clients eine Verbindung zu veröffentlichten Anwendungen herstellen können.
    # 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
    }

Beispiel: Erstellen einer Remotezugriffsbereitstellung

Das folgende Beispiel baut auf dem vorherigen Skript auf, um eine Bereitstellung mit Remotezugriff hinzuzufügen.
Stellen Sie vor dem Start sicher, dass Sie die Schritte in Erste Schritte befolgen. Dieses Beispiel kann mithilfe der beschriebenen Methoden angepasst werden, um ein Skript zur Automatisierung der StoreFront-Bereitstellung zu erstellen.
Dieser Abschnitt erklärt, was jeder Teil des von StoreFront erstellten Skripts bewirkt. Dies hilft Ihnen bei der Anpassung Ihres eigenen Skripts.
  • Legt die Anforderungen für die Fehlerbehandlung fest und importiert die erforderlichen StoreFront-Module. In modernen PowerShell-Versionen sind Importe nicht erforderlich.
    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
  • Erstellt eine StoreFront-Bereitstellung für den internen Zugriff, indem das Skript der vorherigen Beispiele aufgerufen wird. Die Basisbereitstellung wird erweitert, um Remotezugriff zu unterstützen.
    # 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
  • Ruft die in der einfachen Bereitstellung erstellten Dienste ab, da diese aktualisiert werden müssen, um das Remotezugriffsszenario zu unterstützen.
    # 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
  • Aktiviert CitrixAGBasic für den Citrix Receiver™ für Web-Dienst, der für den Remotezugriff über Citrix Gateway erforderlich ist. Ruft die CitrixAGBasic- und ExplicitForms-Authentifizierungsmethode des Citrix Receiver für Web aus den unterstützten Protokollen ab.
    # 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
  • Aktiviert CitrixAGBasic für den Authentifizierungsdienst. Dies ist für den Remotezugriff erforderlich.
    # 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
  • Fügt ein neues Remotezugriffs-Gateway hinzu, wobei die optionale Subnetz-IP-Adresse angegeben und es beim Store für den Remotezugriff registriert wird.
    # 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

Beispiel: Bereitstellung mit optimalem Start-Gateway für Remotezugriff erstellen

Das folgende Beispiel baut auf dem vorherigen Skript auf, um eine Bereitstellung mit optimalem Start-Gateway für Remotezugriff hinzuzufügen.
Bevor Sie beginnen, stellen Sie sicher, dass Sie die Schritte unter Erste Schritte befolgen. Dieses Beispiel kann mithilfe der beschriebenen Methoden angepasst werden, um ein Skript zur Automatisierung der StoreFront-Bereitstellung zu erstellen.

Das Skript verstehen

Dieser Abschnitt erklärt, was jeder Teil des von StoreFront erstellten Skripts bewirkt. Dies hilft Ihnen bei der Anpassung Ihres eigenen Skripts.
  • Legt die Anforderungen an die Fehlerbehandlung fest und importiert die erforderlichen StoreFront-Module. Importe sind in modernen PowerShell-Versionen nicht erforderlich.
    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
  • Ruft das Skript für die Remotezugriffsbereitstellung auf, um die grundlegende Bereitstellung zu konfigurieren und Remotezugriff hinzuzufügen.
    # 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
  • Fügt das bevorzugte optimale Start-Gateway hinzu und ruft es aus der Liste der konfigurierten Gateways ab.
    # 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
  • Ruft den Store-Dienst ab, um das optimale Gateway zu verwenden, registriert es und weist es den Starts von der benannten Site zu.
    # 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