StoreFront SDK

Citrix StoreFront bietet ein SDK, das auf Modulen von Windows PowerShell Version 3.0 beruht. Mit dem SDK können Sie die gleichen Tasks wie mit der Citrix StoreFront-Verwaltungskonsole ausführen und darüber hinaus weitere Tasks, die mit der Konsole allein nicht möglich sind.

Die SDK-Referenz finden Sie unter StoreFront SDK.

Hauptunterschiede zwischen dem SDK von StoreFront 3.0 und dem aktuellen StoreFront SDK

  • High-Level-SDK-Beispiele - Diese Version bietet High-Level-SDK-Beispielskripts, mit denen Sie StoreFront-Bereitstellungen schnell und mühelos automatisieren können. Sie können diese Muster gemäß Ihren spezifischen Anforderungen anpassen und neue Bereitstellungen durch einfache Ausführung eines Skripts erstellen.
  • Neues Low-Level-SDK - Citrix bietet ein Low-Level-StoreFront-SDK mit Dokumentation an, das die Konfiguration von Bereitstellungen einschließlich Stores, Authentifizierungsmethoden, Citrix Receiver für Web- und einheitliche Citrix Receiver-Sites und Remotezugriff über Citrix Gateway ermöglicht.
  • Abwärtskompatibilität - StoreFront 3.6 enthält die APIs für StoreFront 3.0 und ältere Versionen, damit vorhandene Skripts nach und nach in das neue SDK übertragen werden können.

Wichtig:

Die Rückwärtskompatibilität mit StoreFront 3.0 wurde beibehalten, wenn es möglich und praktikabel war. Citrix empfiehlt jedoch, für neue Skripts die neuen Citrix.StoreFront.*-Module zu verwenden, da das StoreFront 3.0-SDK veraltet ist und künftig entfernt wird.

Verwenden des SDKs

Das SDK enthält mehrere PowerShell-Snap-Ins, die automatisch vom Installationsassistenten installiert werden, wenn Sie verschiedene StoreFront-Komponenten installieren und konfigurieren.

Zugreifen auf die Cmdlets:

  1. Starten Sie eine Shell in PowerShell 3.0.

    Zum Ausführen der Shell bzw. des Skripts müssen Sie als Mitglied der lokalen Administratorgruppe auf dem StoreFront-Server angemeldet sein.

  2. Legen Sie die Ausführungsrichtlinie in PowerShell fest, um SDK-Cmdlets in Skripts zu verwenden.

    Weitere Informationen zur PowerShell-Ausführungsrichtlinie finden Sie in der Dokumentation von Microsoft.

  3. Fügen Sie mit dem Befehl Add -Module in der Windows PowerShell-Konsole die Module hinzu, die Sie in der PowerShell-Umgebung benötigen. Geben Sie beispielsweise Folgendes ein:

    Import-Module Citrix.StoreFront

    Geben Sie Folgendes ein, um alle Cmdlets zu importieren:

    Get-Module -ListAvailable | Where-Object { $_.Name.StartsWith("Citrix.StoreFront") } | Import-Module

Nach dem Import haben Sie Zugriff auf die Cmdlets und die zugehörige Hilfe.

Erste Schritte mit dem SDK

Führen Sie folgende Schritte für das Erstellen eines Skripts aus:

  1. Verwenden Sie eines der SDK-Beispiele, die zusammen mit StoreFront im Ordner %ProgramFiles%\Citrix\Receiver StoreFront\PowerShellSDK\Examples installiert wurden.
  2. Das Beispielsskript zeigt die Aufgaben der verschiedenen Teile und hilft Ihnen, Ihr eigenes Skript anzupassen. Weitere Informationen finden Sie im Beispiel eines Anwendungsfalls, in dem die Skriptaktionen ausführlich beschrieben werden.
  3. Passen Sie die Beispielskripts für Ihre Zwecke an. Gehen Sie hierzu folgendermaßen vor:
    • Verwenden Sie die PowerShell-ISE oder ein ähnliches Tool zum Bearbeiten des Skripts.
    • Verwenden Sie Variablen für Werte, die wiederverwendet oder geändert werden sollen.
    • Entfernen Sie alle Befehle, die nicht erforderlich sind.
    • StoreFront-Cmdlets können mit dem Präfix “STF” gekennzeichnet werden.
    • Verwenden Sie das Cmdlet Get-Help, geben Sie den Cmdlet-Namen und den Parameter -Full an, um Informationen zu einem bestimmten Befehl aufzurufen.

Beispiele

Hinweis:

Um beim Erstellen eines Skripts sicherzustellen, dass Sie immer die aktuellen Verbesserungen und Fixes erhalten, empfiehlt Citrix, dass Sie den oben erläuterten Schritten folgen, anstatt das Beispielskript zu kopieren und einzufügen.

Beispiele Beschreibung
Erstellen einer einfachen Bereitstellung Skript: erstellt eine einfache Bereitstellung mit einem StoreFront-Controller, der mit einem einzelnen XenDesktop-Server konfiguriert ist.
Erstellen einer Remotezugriffbereitstellung Skript: erstellt eine Bereitstellung wie im vorherigen Skript plus Remotezugriff.
Erstellen einer Remotezugriffbereitstellung mit Gateway für den optimalen Start Skript: erstellt eine Bereitstellung wie im vorherigen Skript und ermöglicht das Hinzufügen bevorzugter Gateways für den optimalen Start zur Verbesserung der Benutzererfahrung.
Erstellen einer Bereitstellung mit Desktopgerätesite Skript: erstellt eine einfache Bereitstellung plus Konfiguration einer Desktopgerätesite.

Beispiel: Erstellen einer einfachen Bereitstellung

Anhand des folgenden Beispiels wird die Erstellung einer einfachen Bereitstellung mit einem einzelnen XenDesktop-Controller erläutert.

Bevor Sie beginnen, stellen Sie sicher, dass Sie die unter Erste Schritte mit dem SDK aufgeführten Schritte ausführen. Das Beispiel kann unter Verwendung der beschriebenen Methoden zur Erstellung eines Skripts für die Automatisierung der StoreFront-Bereitstellung angepasst werden.

Hinweis:

Um sicherzustellen, dass Sie immer die aktuellen Verbesserungen und Fixes erhalten, empfiehlt Citrix, dass Sie den in diesem Dokument beschriebenen Schritten folgen, anstatt das Beispielskript zu kopieren und einzufügen.

Inhalt des Skripts

In diesem Abschnitt wird die Funktion jedes Teils des Skripts erläutert, das StoreFront erstellt. Dies hilft Ihnen bei der Anpassung des eigenen Skripts.

  • Legt Fehlerbehandlungsanforderungen fest und importiert die erforderlichen StoreFront-Module. Importe sind in neueren Versionen von PowerShell 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, sofern es noch keine gibt, zur Vorbereitung auf das Hinzufügen der erforderlichen StoreFront-Dienste. -Confirm:$false unterdrückt die Anforderung einer Bestätigung zum Fortfahren der Bereitstellung.

     # 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, sofern noch nicht vorhanden, einen neuen Authentifizierungsdienst an dem angegebenen virtuellen Pfad. Die Standardauthentifizierungsmethode mit Benutzernamen 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 einen neuen Storedienst mit einem XenDesktop-Controller und mit im Array $XenDesktopServers definierten Servern an dem angegebenen Pfad, sofern noch nicht vorhanden.

     # 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 einen Citrix Receiver für Web-Dienst an dem angegebenen virtuellen Pfad ein für den Zugriff auf Anwendungen, die in dem 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-/Citrix Workspace-App-Clients eine Verbindung mit 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 Remotezugriffbereitstellung

Das folgende, auf dem vorherigen Skript aufbauende Beispiel dient zum Erstellen einer Bereitstellung mit Remotezugriff.

Bevor Sie beginnen, stellen Sie sicher, dass Sie die unter Erste Schritte mit dem SDK aufgeführten Schritte ausführen. Das Beispiel kann unter Verwendung der beschriebenen Methoden zur Erstellung eines Skripts für die Automatisierung der StoreFront-Bereitstellung angepasst werden.

Hinweis:

Um sicherzustellen, dass Sie immer die aktuellen Verbesserungen und Fixes erhalten, empfiehlt Citrix, dass Sie den in diesem Dokument beschriebenen Schritten folgen, anstatt das Beispielskript zu kopieren und einzufügen.

Inhalt des Skripts

In diesem Abschnitt wird die Funktion jedes Teils des Skripts erläutert, das StoreFront erstellt. Dies hilft Ihnen bei der Anpassung des eigenen Skripts.

  • Legt Fehlerbehandlungsanforderungen fest und importiert die erforderlichen StoreFront-Module. Importe sind in neueren Versionen von PowerShell 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 mit internem Zugriff unter Aufruf des vorherigen Beispielskripts. Die Basisbereitstellung wird um Unterstützung des Remotezugriffs erweitert.

     # 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 für die einfache Bereitstellung erstellten Dienste ab, da sie für die Unterstützung des Remotezugriffs aktualisiert werden müssen.

     # 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 in dem für Remotezugriff mit Citrix Gateway erforderlichen Citrix Receiver für Web-Dienst. Ruft die Citrix Receiver für Web CitrixAGBasic- und die ExplicitForms-Authentifizierungsmethode von 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 Remotezugriffsgateway hinzu sowie die optionale Subnetz-IP-Adresse, falls diese angegeben wird, und registriert es bei dem Store für den Remotezugriff.

     # 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: Erstellen einer Remotezugriffbereitstellung mit Gateway für den optimalen Start

Das folgende, auf dem vorherigen Skript aufbauende Beispiel dient zum Erstellen einer Bereitstellung mit Remotezugriff und Gateway für den optimalen Start.

Bevor Sie beginnen, stellen Sie sicher, dass Sie die unter Erste Schritte mit dem SDK aufgeführten Schritte ausführen. Das Beispiel kann unter Verwendung der beschriebenen Methoden zur Erstellung eines Skripts für die Automatisierung der StoreFront-Bereitstellung angepasst werden.

Hinweis:

Um sicherzustellen, dass Sie immer die aktuellen Verbesserungen und Fixes erhalten, empfiehlt Citrix, dass Sie den in diesem Dokument beschriebenen Schritten folgen, anstatt das Beispielskript zu kopieren und einzufügen.

Inhalt des Skripts

In diesem Abschnitt wird die Funktion jedes Teils des Skripts erläutert, das StoreFront erstellt. Dies hilft Ihnen bei der Anpassung des eigenen Skripts.

  • Legt Fehlerbehandlungsanforderungen fest und importiert die erforderlichen StoreFront-Module. Importe sind in neueren Versionen von PowerShell 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 zur Erstellung einer Remotezugriffbereitstellung zum Konfigurieren der einfachen Bereitstellung mit Remotezugriff auf.

     # 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 Gateway für den optimalen Start 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
    
  • Bewirkt, dass der Storedienst das optimale Gateway verwendet und es für Startvorgänge aus der angegebenen Farm registriert.

     # 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
    

Beispiel: Erstellen einer Bereitstellung mit Desktopgerätesite

Das folgende, auf dem Skript zum Erstellen einer einfachen Bereitstellung aufbauende Beispiel dient zum Hinzufügen einer Bereitstellung mit Desktopgerätesite.

Bevor Sie beginnen, stellen Sie sicher, dass Sie die unter Erste Schritte mit dem SDK aufgeführten Schritte ausführen. Das Beispiel kann unter Verwendung der beschriebenen Methoden zur Erstellung eines Skripts für die Automatisierung der StoreFront-Bereitstellung angepasst werden.

Hinweis:

Um sicherzustellen, dass Sie immer die aktuellen Verbesserungen und Fixes erhalten, empfiehlt Citrix, dass Sie den in diesem Dokument beschriebenen Schritten folgen, anstatt das Beispielskript zu kopieren und einzufügen.

Inhalt des Skripts

In diesem Abschnitt wird die Funktion jedes Teils des Skripts erläutert, das StoreFront erstellt. Dies hilft Ihnen bei der Anpassung des eigenen Skripts.

  • Legt Fehlerbehandlungsanforderungen fest und importiert die erforderlichen StoreFront-Module. Importe sind in neueren Versionen von PowerShell 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
    
  • Automatisieren Sie den Desktopgerätepfad basierend auf $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”.

     $desktopApplianceVirtualPath = "$($StoreIISPath.TrimEnd('/'))Appliance"
    
  • Ruft das einfache Bereitstellungsskript zum Einrichten der Standardbereitstellung mit den grundlegenden Diensten auf.

     # 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
    
  • Bewirkt, dass der Storedienst die Desktopgerätesite verwendet. Verwenden Sie das Cmdlet Add-STFDesktopApplianceService, um die neue Site mit MultiDesktop und expliziter Authentifizierung durch Benutzername und Kennwort hinzuzufügen.

     $store = Get-STFStoreService -VirtualPath $StoreVirtualPath
     # Create a new Desktop Appliance site using the desktops published by the Store Service
     Add-STFDesktopApplianceService -VirtualPath $desktopApplianceVirtualPath -StoreService $store -EnableExplicit
    

Beispiel: Austausch von Metadaten zwischen Identitäts- und Dienstanbieter (StoreFront) für die SAML-Authentifizierung

Die SAML-Authentifizierung kann in der StoreFront-Verwaltungskonsole konfiguriert werden (siehe Konfigurieren des Authentifizierungsdiensts) oder mit den folgenden PowerShell-Cmdlets:

  • Export-STFSamlEncryptionCertificate
  • Export-STFSamlSigningCertificate
  • Import-STFSamlEncryptionCertificate
  • Import-STFSamlSigningCertificate
  • New-STFSamlEncryptionCertificate
  • New-STFSamlIdPCertificate
  • New-STFSamlSigningCertificate

Sie können Sie das Cmdlet Update-STFSamlIdPFromMetadata verwenden, wenn Metadaten (IDs, Zertifikate, Endpunkte und andere Konfigurationselemente) zwischen Identitäts- und Dienstanbieter, in diesem Fall StoreFront, ausgetauscht werden sollen.

Metadatenendpunkt für einen StoreFront-Store namens “Store” mit dediziertem Authentifizierungsdienst:

https://<storefront host>/Citrix/StoreAuth/SamlForms/ServiceProvider/Metadata

Wenn Ihr Identitätsanbieter den Metadatenimport unterstützt, können Sie ihn an die oben aufgeführte URL verweisen. Hinweis: Dies muss über HTTPS erfolgen.

Damit StoreFront Metadaten eines Identitätsanbieters nutzen kann, kann das folgende PowerShell-Skript verwendet werden:

Get-Module "Citrix.StoreFront*" -ListAvailable | Import-Module

# Remember to change this with the virtual path of your Store.
$StoreVirtualPath = "/Citrix/Store"

$store = Get-STFStoreService -VirtualPath $StoreVirtualPath
$auth = Get-STFAuthenticationService -StoreService $store

# To read the metadata directly from the Identity Provider, use the following:
# Note again this is only allowed for https endpoints
Update-STFSamlIdPFromMetadata -AuthenticationService $auth -Url https://example.com/FederationMetadata/2007-06/FederationMetadata.xml

# If the metadata has already been download, use the following:
# Note: Ensure that the file is encoded as UTF-8
Update-STFSamlIdPFromMetadata -AuthenticationService $auth -FilePath "C:\Users\exampleusername\Downloads\FederationMetadata.xml"

Beispiel: Auflisten der Metadaten und ACS-Endpunkte für einen bestimmten Store für die SAML-Authentifizierung

Mit dem folgenden Skript können Sie die Metadaten und ACS-Endpunkte (Assertion Consumer Service) für einen bestimmten Store auflisten.

# Change this value for your Store
$storeVirtualPath = "/Citrix/Store"

$auth = Get-STFAuthenticationService -Store (Get-STFStoreService -VirtualPath $storeVirtualPath)
$spId = $auth.AuthenticationSettings["samlForms"].SamlSettings.ServiceProvider.Uri.AbsoluteUri
$acs = New-Object System.Uri $auth.Routing.HostbaseUrl, ($auth.VirtualPath + "/SamlForms/AssertionConsumerService")
$md = New-Object System.Uri $auth.Routing.HostbaseUrl, ($auth.VirtualPath + "/SamlForms/ServiceProvider/Metadata")
$samlTest = New-Object System.Uri $auth.Routing.HostbaseUrl, ($auth.VirtualPath + "/SamlTest")
Write-Host "SAML Service Provider information:
Service Provider ID: $spId
Assertion Consumer Service: $acs
Metadata: $md
Test Page: $samlTest"

Beispiel für die Ausgabe:

SAML Service Provider information:
Service Provider ID: https://storefront.example.com/Citrix/StoreAuth
Assertion Consumer Service: https://storefront.example.com/Citrix/StoreAuth/SamlForms/AssertionConsumerService
Metadata: https://storefront.example.com/Citrix/StoreAuth/SamlForms/ServiceProvider/Metadata
Test Page: https://storefront.example.com/Citrix/StoreAuth/SamlTest