StoreFront

StoreFront SDK

Citrix StoreFront は、Microsoft Windows PowerShell バージョン 2.0 モジュールをベースにした SDK を提供します。この SDK を使用すると、StoreFront MMC コンソールで行うのと同じタスクに加えて、コンソール単独では実行できないタスクも実行できます。

注:

PowerShell SDK は、PowerShell 6 以降との互換性はありません。

SDK リファレンスについては、StoreFront SDK を参照してください。

SDK の使用

SDK は、さまざまな StoreFront コンポーネントをインストールおよび構成する際に、インストールウィザードによって自動的にインストールされる複数の PowerShell スナップインで構成されています。

コマンドレットにアクセスして実行するには:

  1. StoreFront 管理コンソールが閉じていることを確認します。

  2. PowerShell コマンドラインプロンプトまたは Windows PowerShell ISE を管理者として起動します。

    StoreFront サーバー上のローカル管理者グループのメンバーを使用して、シェルまたはスクリプトを実行する必要があります。

  3. スクリプト内で SDK コマンドレットを使用するには、PowerShell の実行ポリシーを RemoteSigned に設定します。PowerShell の実行ポリシーの詳細については、Microsoft ドキュメントを参照してください。

SDK の開始

スクリプトを作成するには、次の手順を実行します。

  1. StoreFront によってインストールされた提供されている SDK の例のいずれかを、%ProgramFiles%\Citrix\Receiver StoreFront\PowerShellSDK\Examples フォルダーに配置します。
  2. 独自のスクリプトをカスタマイズするために、各部分が何をしているかを理解するために、例のスクリプトを確認します。詳細については、スクリプトの動作を詳細に説明している例のユースケースを参照してください。
  3. 例のスクリプトを変換および適応させて、より使いやすいスクリプトにします。これを行うには:
    • PowerShell ISE または同様のツールを使用してスクリプトを編集します。
    • 再利用または変更する値を割り当てるために変数を使用します。
    • 不要なコマンドを削除します。
    • StoreFront コマンドレットはプレフィックス STF で識別できることに注意してください。
    • 特定のコマンドの詳細については、コマンドレット名と -Full パラメーターを指定して Get-Help コマンドレットを使用します。

注:

スクリプトを作成する際は、常に最新の機能強化と修正を入手するために、例のスクリプトをコピーアンドペーストするのではなく、上記の手順に従うことを Citrix® は推奨します。

説明
シンプルな展開の作成 スクリプト: 単一の XenDesktop サーバーで構成された StoreFront コントローラーを使用して、シンプルな展開を作成します。
リモートアクセス展開の作成 スクリプト: 以前のスクリプトに基づいて、展開にリモートアクセスを追加します。
最適な起動ゲートウェイを使用したリモートアクセス展開の作成 スクリプト: 以前のスクリプトに基づいて、より良いユーザーエクスペリエンスのために優先される最適な起動ゲートウェイを追加します。

例: シンプルな展開の作成

次の例は、1 つの XenDesktop® コントローラーで構成されたシンプルな展開を作成する方法を示しています。

開始する前に、SDK の開始で詳述されている手順に従ってください。この例は、StoreFront 展開を自動化するためのスクリプトを作成するために、説明されている方法を使用してカスタマイズできます。

注:

常に最新の機能強化と修正を入手するために、Citrix は、例のスクリプトをコピーアンドペーストするのではなく、このドキュメントに記載されている手順に従うことを推奨します。

スクリプトの理解

このセクションでは、StoreFront によって生成されたスクリプトの各部分が何をしているかを説明します。これは、独自のスクリプトをカスタマイズするのに役立ちます。

  • エラー処理の要件を設定し、必要な StoreFront モジュールをインポートします。新しいバージョンの 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"
         )
         \# StoreFront モジュールをインポートします。自動ロードをサポートしていない PowerShell 3.0 より前のバージョンでは必須です。
         Import-Module Citrix.StoreFront
         Import-Module Citrix.StoreFront.Stores
         Import-Module Citrix.StoreFront.Authentication
         Import-Module Citrix.StoreFront.WebReceiver
     <!--NeedCopy-->
    
  • 指定された $StoreVirtualPath に基づいて、認証および Citrix Receiver for Web サービスの仮想パスを自動化します。仮想パスは常に IIS 内のパスであるため、$StoreVirtualPath$StoreIISpath と同等です。したがって、PowerShell では、”/Citrix/Store”、”/Citrix/StoreWeb”、または “/Citrix/StoreAuth” のような値になります。

     \# ストアに基づいて使用する認証および Receiver の仮想パスを決定します。
     $authenticationVirtualPath = "$($StoreIISPath.TrimEnd('/'))Auth"
     $receiverVirtualPath = "$($StoreVirtualPath.TrimEnd('/'))Web"
     <!--NeedCopy-->
    
  • 必要な StoreFront サービスを追加する準備として、まだ展開が存在しない場合は新しい展開を作成します。-Confirm:$false は、展開を進めることの確認要件を抑制します。

     \# 展開が既に存在するかどうかを判断します。
     $existingDeployment = Get-STFDeployment
     if(-not $existingDeployment)
     {
         \# 必要な StoreFront コンポーネントをインストールします。
         Add-STFDeployment -HostBaseUrl $HostbaseUrl -SiteId $SiteId -Confirm:$false
     }
     elseif($existingDeployment.HostbaseUrl -eq $HostbaseUrl)
     {
         \# 展開は存在するが、目的のホストベース URL に構成されている。
         Write-Output "指定されたホストベース URL を持つ展開がこのサーバーに既に作成されており、それが使用されます。"
     }
     else
     {
         Write-Error "異なるホストベース URL を持つ展開がこのサーバーに既に作成されています。"
     }
     <!--NeedCopy-->
    
  • 指定された仮想パスに認証サービスが存在しない場合は、新しい認証サービスを作成します。ユーザー名とパスワードのデフォルトの認証方法が有効になります。

     \# 指定された仮想パスに認証サービスが存在するかどうかを判断します。
     $authentication = Get-STFAuthenticationService -VirtualPath $authenticationVirtualPath
     if(-not $authentication)
     {
         \# ストアの IIS パスに Auth を追加して認証サービスを追加します。
         $authentication = Add-STFAuthenticationService $authenticationVirtualPath
     }
     else
     {
         Write-Output "指定された仮想パスに認証サービスが既に存在しており、それが使用されます。"
     }
     <!--NeedCopy-->
    
  • 指定された仮想パスにストアサービスがまだ存在しない場合は、配列 $XenDesktopServers で定義されたサーバーを持つ 1 つの XenDesktop コントローラーで構成された新しいストアサービスを作成します。

     \# 指定された仮想パスにストアサービスが存在するかどうかを判断します。
     $store = Get-STFStoreService -VirtualPath $StoreVirtualPath
     if(-not $store)
     {
     \# 提供されたサーバーからリソースを公開するように構成された新しい認証サービスを使用するストアを追加します。
     $store = Add-STFStoreService -VirtualPath $StoreVirtualPath -AuthenticationService $authentication -FarmName $Farmtype -FarmType $Farmtype -Servers $FarmServers -LoadBalance $LoadbalanceServers \`
             -Port $Port -SSLRelayPort $SSLRelayPort -TransportType $TransportType
     }
     else
     {
         Write-Output "指定された仮想パスにストアサービスが既に存在しており、それが使用されます。ファームとサーバーはこのストアに追加されます。"
         \# ストアに構成されているファームの数を取得します。
         $farmCount = (Get-STFStoreFarmConfiguration $store).Farms.Count
         \# 一意の名前でファームをストアに追加します。
         Add-STFStoreFarm -StoreService $store -FarmName "Controller$($farmCount + 1)" -FarmType $Farmtype -Servers $FarmServers -LoadBalance $LoadbalanceServers -Port $Port \`
             -SSLRelayPort $SSLRelayPort -TransportType $TransportType
     }
     <!--NeedCopy-->
    
  • 上記で作成されたストアで公開されているアプリケーションにアクセスするために、指定された IIS 仮想パスに Citrix Receiver™ for Web サービスを追加します。

     \# 指定された仮想パスに Receiver サービスが存在するかどうかを判断します。
     $receiver = Get-STFWebReceiverService -VirtualPath $receiverVirtualPath
     if(-not $receiver)
     {
         \# ユーザーがストアで公開されているアプリケーションやデスクトップにアクセスできるように、Receiver for Web サイトを追加します。
         $receiver = Add-STFWebReceiverService -VirtualPath $receiverVirtualPath -StoreService $store
     }
     else
     {
         Write-Output "指定された仮想パスに Web Receiver サービスが既に存在しており、それが使用されます。"
     }
     <!--NeedCopy-->
    
  • 古い Citrix Receiver または Citrix Workspace アプリクライアントが公開されたアプリケーションに接続できるように、ストアの XenApp サービスを有効にします。

     \# ストアサービスに対して PNA が構成されているかどうかを判断します。
     $storePnaSettings = Get-STFStorePna -StoreService $store
     if(-not $storePnaSettings.PnaEnabled)
     {
     \# ストアで XenApp サービスを有効にし、このサーバーのデフォルトにします。
     Enable-STFStorePna -StoreService $store -AllowUserPasswordChange -DefaultPnaService
     }
     <!--NeedCopy-->
    

例: リモートアクセス展開の作成

次の例は、以前のスクリプトに基づいて、リモートアクセスを含む展開を追加します。

開始する前に、SDK の開始で詳述されている手順に従ってください。この例は、StoreFront 展開を自動化するためのスクリプトを作成するために、説明されている方法を使用してカスタマイズできます。

注:

常に最新の機能強化と修正を入手するために、Citrix は、例のスクリプトをコピーアンドペーストするのではなく、このドキュメントに記載されている手順に従うことを推奨します。

スクリプトの理解

このセクションでは、StoreFront によって生成されたスクリプトの各部分が何をしているかを説明します。これは、独自のスクリプトをカスタマイズするのに役立ちます。

  • エラー処理の要件を設定し、必要な StoreFront モジュールをインポートします。新しいバージョンの 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
    
     \# どのような失敗も終了失敗です。
     $ErrorActionPreference = 'Stop'
     $ReportErrorShowStackTrace = $true
     $ReportErrorShowInnerException = $true
     \# StoreFront モジュールをインポートします。自動ロードをサポートしていない PowerShell 3.0 より前のバージョンでは必須です。
     Import-Module Citrix.StoreFront
     Import-Module Citrix.StoreFront.Stores
     Import-Module Citrix.StoreFront.Roaming
     <!--NeedCopy-->
    
  • 以前の例のスクリプトを呼び出すことにより、内部アクセス StoreFront 展開を作成します。基本展開はリモートアクセスをサポートするように拡張されます。

     \# SimpleDeployment の例を呼び出して、シンプルな展開を作成します。
     $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-->
    
  • リモートアクセスシナリオをサポートするために更新する必要があるため、シンプルな展開で作成されたサービスを取得します。

     \# ストアに基づいて認証および Receiver サイトを決定します。
     $store = Get-STFStoreService -VirtualPath $StoreVirtualPath
     $authentication = Get-STFAuthenticationService -StoreService $store
     $receiverForWeb = Get-STFWebReceiverService -StoreService $store
     <!--NeedCopy-->
    
  • Citrix Gateway を使用したリモートアクセスに必要な Citrix Receiver for Web サービスで CitrixAGBasic を有効にします。サポートされているプロトコルから Citrix Receiver for Web CitrixAGBasic および ExplicitForms 認証方法を取得します。

     \# サポートされているプロトコルから Citrix Receiver for Web CitrixAGBasic および ExplicitForms 認証方法を取得します。
     \# プロトコル名が既知の場合は直接使用できるため、デモンストレーション目的で含まれています。
     $receiverMethods = Get-STFWebReceiverAuthenticationMethodsAvailable | Where-Object { $_ -match "Explicit" -or $_ -match "CitrixAG" }
     \# Receiver for Web で CitrixAGBasic を有効にします(リモートアクセスに必要)。
     Set-STFWebReceiverService $receiverForWeb -AuthenticationMethods $receiverMethods
     <!--NeedCopy-->
    
  • 認証サービスで CitrixAGBasic を有効にします。これはリモートアクセスに必要です。

     \# インストールされているプロトコルから CitrixAGBasic 認証方法を取得します。
     \# プロトコル名が既知の場合は直接使用できるため、デモンストレーション目的で含まれています。
     $citrixAGBasic = Get-STFAuthenticationProtocolsAvailable | Where-Object { $_ -match "CitrixAGBasic" }
     \# 認証サービスで CitrixAGBasic を有効にします(リモートアクセスに必要)。
     Enable-STFAuthenticationServiceProtocol -AuthenticationService $authentication -Name $citrixAGBasic
     <!--NeedCopy-->
    
  • 新しいリモートアクセスゲートウェイを追加し、オプションのサブネット IP アドレスが提供されている場合はそれを追加し、リモートでアクセスされるストアに登録します。

     \# 新しいストアにリモートでアクセスするために使用される新しいゲートウェイを追加します。
     Add-STFRoamingGateway -Name "NetScaler10x" -LogonType Domain -Version Version10_0_69_4 -GatewayUrl $GatewayUrl '
     \-CallbackUrl $GatewayCallbackUrl -SecureTicketAuthorityUrls $GatewaySTAUrls
     \# 構成から新しいゲートウェイを取得します(-PassThru がパラメーターとして指定されている場合、Add-STFRoamingGateway は新しいゲートウェイを返します)。
     $gateway = Get-STFRoamingGateway -Name $GatewayName
     \# ゲートウェイサブネットが提供された場合は、ゲートウェイオブジェクトに設定します。
     if($GatewaySubnetIP)
     {
         Set-STFRoamingGateway -Gateway $gateway -SubnetIPAddress $GatewaySubnetIP
     }
     \# 新しいストアにゲートウェイを登録します。
     Register-STFStoreGateway -Gateway $gateway -StoreService $store -DefaultGateway
     <!--NeedCopy-->
    

例: 最適な起動ゲートウェイを使用したリモートアクセス展開の作成

次の例は、以前のスクリプトに基づいて、最適な起動ゲートウェイリモートアクセスを含む展開を追加します。

開始する前に、SDK の開始で詳述されている手順に従ってください。この例は、StoreFront 展開を自動化するためのスクリプトを作成するために、説明されている方法を使用してカスタマイズできます。

注:

常に最新の機能強化と修正を入手するために、Citrix は、例のスクリプトをコピーアンドペーストするのではなく、このドキュメントに記載されている手順に従うことを推奨します。

スクリプトの理解

このセクションでは、StoreFront によって生成されたスクリプトの各部分が何をしているかを説明します。これは、独自のスクリプトをカスタマイズするのに役立ちます。

  • エラー処理の要件を設定し、必要な StoreFront モジュールをインポートします。新しいバージョンの 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
     \# どのような失敗も終了失敗です。
     $ErrorActionPreference = 'Stop'
     $ReportErrorShowStackTrace = $true
     $ReportErrorShowInnerException = $true
     \# StoreFront モジュールをインポートします。自動ロードをサポートしていない PowerShell 3.0 より前のバージョンでは必須です。
     Import-Module Citrix.StoreFront
     Import-Module Citrix.StoreFront.Stores
     Import-Module Citrix.StoreFront.Roaming
     <!--NeedCopy-->
    
  • リモートアクセス展開スクリプトを呼び出して、基本展開を構成し、リモートアクセスを追加します。

     \# リモートアクセス展開を作成します。
     $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-->
    
  • 優先される最適な起動ゲートウェイを追加し、構成されたゲートウェイのリストからそれを取得します。

     \# デスクトップとアプリへのリモート HDX アクセスに使用される新しいゲートウェイを追加します。
     $gateway = Add-STFRoamingGateway -Name $OptimalGatewayName -LogonType UsedForHDXOnly -GatewayUrl $OptimalGatewayUrl -SecureTicketAuthorityUrls $OptimalGatewaySTAUrls -PassThru
     <!--NeedCopy-->
    
  • 最適なゲートウェイを使用するストアサービスを取得し、指定されたファームからの起動に割り当てて登録します。

     \# SimpleDeployment.ps1 によって構成されたストアを取得します。
     $store = Get-STFStoreService -VirtualPath $StoreVirtualPath
     \# すべてのファーム(現在は 1 つのみ)に対する起動のために、新しいストアにゲートウェイを登録します。
     $farmNames = @($store.FarmsConfiguration.Farms | foreach { $_.FarmName })
     Register-STFStoreOptimalLaunchGateway -Gateway $gateway -StoreService $store -FarmName $farmNames
     <!--NeedCopy-->
    
StoreFront SDK

この記事の概要