Product Documentation

Beispiel: Erstellen eines PvD-Desktops

Sep 29, 2015

Mit dem Skriptbeispiel in diesem Abschnitt kann eine Bereitstellungsgruppe erstellt werden, die PvD-Desktops (Personal vDisk) enthält.

Bevor Sie beginnen, stellen Sie sicher, dass Sie die in Erste Schritte mit dem SDK aufgeführten Schritte ausführen. In diesem Abschnitt wird dargestellt, wie Sie Studio für die Durchführung des Vorgangs verwenden, für den Sie ein Skript erstellen möchten, und für das Sammeln des Protokolls der SDK-Vorgänge, die Studio für die Ausführung der Aufgabe vorgenommen hat. Die Ausgabe kann so angepasst werden, dass ein Skript für die Automatisierung der Aufgabe erstellt wird.

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

Inhalt des Skripts

Im folgenden Abschnitt wird die Funktion jedes Teils des Skripts erläutert, das Studio erstellt. Dies hilft Ihnen bei der Anpassung des eigenen Skripts. Zeilennummern und Zeilenumbrüche wurden dem Skript für eine bessere Lesbarkeit hinzugefügt.

1. Start-LogHighLevelOperation -AdminAddress 'test-ddc.mydomain.com:80' -Source 'Studio' -StartTime 31/07/2013 10:08:58 -Text 'Create Delivery Group `'Win7 PvD Desktops`''

Startet einen protokollierten Vorgang und gibt eine Protokoll-ID zurück, die an nachfolgende Vorgänge übergeben wird, um sie der größeren Aufgabe zuzuordnen.

2. New-BrokerDesktopGroup -AdminAddress 'test-ddc.mydomain.com:80' -ColorDepth 'TwentyFourBit' -DeliveryType 'DesktopsOnly' -DesktopKind 'Private' -InMaintenanceMode $False -IsRemotePC $False -LoggingId 846f2d42-a994-4bce-ab58-be05c8d73b99 -MinimumFunctionalLevel 'L7' -Name 'Win7 PvD Desktops' -OffPeakBufferSizePercent 10 -PeakBufferSizePercent 10 -PublishedName 'Win7 PvD Desktops' -Scope @() -SecureIcaRequired $False -SessionSupport 'SingleSession' -ShutdownDesktopsAfterUse $False -TimeZone 'GMT Standard Time'

Erstellt eine neue Bereitstellungsgruppe mit Optionen, die vom Studio-Assistenten gesammelt wurden.

3. Add-BrokerMachinesToDesktopGroup -AdminAddress 'test-ddc.mydomain.com:80' -Catalog 'win7-pvd' -Count 2 -DesktopGroup 'Win7 PvD Desktops' -LoggingId 846f2d42-a994-4bce-ab58-be05c8d73b99

Fügt die vom benannten Katalog angeforderte Anzahl an Maschinen zur neuen Bereitstellungsgruppe hinzu.

4. Set-Variable -Name 'brokerUsers' -Value @('S-1-5-21-3291547628-200264090-930806513-1104','S-1-5-21-3291547628-200264090-930806513-1105') Get-BrokerUser -AdminAddress 'test-ddc.mydomain.com:80' -Filter {(SID -in $brokerUsers)} -MaxRecordCount 2147483647 Remove-Variable -Name 'brokerUsers' New-BrokerUser -AdminAddress 'test-ddc.mydomain.com:80' -Name 'MYDOMAIN\user1' New-BrokerUser -AdminAddress 'test-ddc.mydomain.com:80' -Name 'MYDOMAIN\user2'

Die oben aufgeführten Befehle sind nicht erforderlich, da Benutzer von Studio verifiziert werden.

5. Test-BrokerAssignmentPolicyRuleNameAvailable -AdminAddress 'test-ddc.mydomain.com:80' -Name @('Win7 PvD Desktops')

Studio prüft, ob der Richtlinienzuordnungsname zur Verfügung steht.

6. New-BrokerAssignmentPolicyRule -AdminAddress 'test-ddc.mydomain.com:80' -DesktopGroupUid 41 -Enabled $True -IncludedUserFilterEnabled $False -LoggingId 846f2d42-a994-4bce-ab58-be05c8d73b99 -MaxDesktops 1 -Name 'Win7 PvD Desktops'

Erstellt die neue Richtlinienzuordnungsregel für die Bereitstellungsgruppe. Es sind keine Benutzer angegeben, daher erfolgt die Steuerung durch die Zugriffsrichtlinienregel.

7. Set-Variable -Name 'brokerUsers' -Value @('S-1-5-21-3291547628-200264090-930806513-1104','S-1-5-21-3291547628-200264090-930806513-1105') Get-BrokerUser -AdminAddress 'test-ddc.mydomain.com:80' -Filter {(SID -in $brokerUsers)} -MaxRecordCount 2147483647 Remove-Variable -Name 'brokerUsers' New-BrokerUser -AdminAddress 'test-ddc.mydomain.com:80' -Name 'MYDOMAIN\user1' New-BrokerUser -AdminAddress 'test-ddc.mydomain.com:80' -Name 'MYDOMAIN\user2' 

Die oben aufgeführten Befehle sind nicht erforderlich, da Studio weitere Prüfungen durchführt.

8. Test-BrokerAccessPolicyRuleNameAvailable -AdminAddress 'test-ddc.mydomain.com:80' -Name @('Win7 PvD Desktops_Direct')

Studio stellt sicher, dass der Regelname für die Zugriffsrichtlinie zur Verfügung steht.

9. New-BrokerAccessPolicyRule -AdminAddress 'test-ddc.mydomain.com:80' -AllowedConnections 'NotViaAG' -AllowedProtocols @('HDX','RDP') -AllowRestart $True -DesktopGroupUid 41 -Enabled $True -IncludedSmartAccessFilterEnabled $True -IncludedUserFilterEnabled $True -IncludedUsers @('MYDOMAIN\user1','MYDOMAIN\user2') -LoggingId 846f2d42-a994-4bce-ab58-be05c8d73b99 -Name 'Win7 PvD Desktops_Direct'

Erstellt die Zugriffsrichtlinienregel für den neuen Desktop für Verbindungen, die nicht über NetScaler Gateway erfolgen.

10. Test-BrokerAccessPolicyRuleNameAvailable -AdminAddress 'test-ddc.mydomain.com:80' -Name @('Win7 PvD Desktops_AG') New-BrokerAccessPolicyRule -AdminAddress 'test-ddc.mydomain.com:80' -AllowedConnections 'ViaAG' -AllowedProtocols @('HDX','RDP') -AllowRestart $True -DesktopGroupUid 41 -Enabled $True -IncludedSmartAccessFilterEnabled $True -IncludedSmartAccessTags @() -IncludedUserFilterEnabled $True -IncludedUsers @('MYDOMAIN\user1','MYDOMAIN\user2') -LoggingId 846f2d42-a994-4bce-ab58-be05c8d73b99 -Name 'Win7 PvD Desktops_AG'

Studio wiederholt diesen Vorgang für Verbindungen über NetScaler Gateway.

11. Test-BrokerPowerTimeSchemeNameAvailable -AdminAddress 'test-ddc.mydomain.com:80' -Name @('Win7 PvD Desktops_Weekdays') New-BrokerPowerTimeScheme -AdminAddress 'test-ddc.mydomain.com:80' -DaysOfWeek 'Weekdays' -DesktopGroupUid 41 -DisplayName 'Weekdays' -LoggingId 846f2d42-a994-4bce-ab58-be05c8d73b99 -Name 'Win7 PvD Desktops_Weekdays' -PeakHours @($False,$False,$False,$False,$False,$False,$False,$True,$True,$True,$True,$True,$True,$True,$True, $True,$True,$True,$True,$False,$False,$False,$False,$False) -PoolSize @(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) Test-BrokerPowerTimeSchemeNameAvailable -AdminAddress 'test-ddc.mydomain.com:80' -Name @('Win7 PvD Desktops_Weekend') New-BrokerPowerTimeScheme -AdminAddress 'test-ddc.mydomain.com:80' -DaysOfWeek 'Weekend' -DesktopGroupUid 41 -DisplayName 'Weekend' -LoggingId 846f2d42-a994-4bce-ab58-be05c8d73b99 -Name 'Win7 PvD Desktops_Weekend' -PeakHours @($False,$False,$False,$False,$False,$False,$False,$True,$True,$True,$True,$True,$True,$True,$True, $True,$True,$True,$True,$False,$False,$False,$False,$False) -PoolSize @(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

Studio prüft, ob die Namen für die (optionalen) Wochentag- und Wochenend-Energieschemas verfügbar sind und fügt sie hinzu.

12. Stop-LogHighLevelOperation -AdminAddress 'test-ddc.mydomain.com:80' -EndTime 31/07/2013 10:09:05 -HighLevelOperationId '846f2d42-a994-4bce-ab58-be05c8d73b99' -IsSuccessful $True

Beendet die Protokollierung, die in Schritt 1 begonnen wurde, und gibt einen Erfolg an.

Anpassen des Skripts

In diesem Abschnitt wird erläutert, wie Sie die Studio-Ausgabe in ein besser verwendbares Skript konvertieren und anpassen.

Das Skript erstellt eine Bereitstellungsgruppe, die PvD-Desktops enthält. Der in den Parametern angegebene Katalog muss bereits vorhanden sein und die richtigen Daten enthalten (den Zuteilungstyp "Static" und einen PvD-Datenträger). Das Skript ist für die Ausführung von einer PowerShell-Befehlszeile konzipiert, wobei Sie als Citrix Administrator angemeldet sein müssen. Es werden keine Berechtigungen überprüft. Das Skript schlägt fehl, wenn der Benutzer nicht über die entsprechenden Berechtigungen verfügt.

<# Sample usage: .\CreatePvDGroup.ps1 ` -GroupName "Win7 PvD Desktops" ` -SrcCatalog "win7-pvd" ` -NumDesktops 2 ` -Users @('mydomain\user1','mydomain\user2') ` #> Param( [Parameter(Mandatory=$true)] [string] $GroupName, [Parameter(Mandatory=$true)] [string] $SrcCatalog, [Parameter(Mandatory=$true)] [int] $NumDesktops, [Parameter(Mandatory=$true)] [array] $Users [string] $AdminAddress )

In der Tabelle werden die im Skript verwendeten Parameter erläutert.

Parameter Beschreibung
GroupName Der Name der neuen PvD-Desktopgruppe.
SrcCatalog Der Name des Katalogs, der zum Erstellen des PvD-Desktops verwendet wird. Verwenden Sie beim Erstellen des Katalogs den Zuteilungstyp "Static". Auch Maschinen müssen PvD-Datenträger haben.
NumDesktops Die Anzahl der Maschinen, die der PvD-Desktopgruppe hinzugefügt werden. Wenn nicht genug Maschinen verfügbar sind, werden so viele wie möglich hinzugefügt.
Benutzer Die Benutzer, die auf die Gruppe zugreifen können. Dies ist eine Liste von Benutzern oder Gruppen, z. B. @('mydomain\Domain Users') oder @('mydomain\user1','mydomain\user2')
Set-HypAdminConnection -AdminAddress $adminAddress

Gibt die zu verwendende Hypervisor-Adminverbindung an. Damit entfällt für einige Befehle der Bedarf von -AdminAddress.

$peakPoolSize = 2 $weekendPoolSizeByHour = new-object int[] 24 $weekdayPoolSizeByHour = new-object int[] 24 9..17 | %{ $weekdayPoolSizeByHour[$_] = $peakPoolSize } $peakHours = (0..23 | %{ $_ -ge 9 -and $_ -le 17 })

Hiermit werden 24 Elementarrays mit einer 1 oder einer 0 in jedem Eintrag erstellt. Auf diese Weise können Sie für die Bereitstellungsgruppen die Spitzenzeiten für die Energiezeitpläne festlegen. Die Elemente 9 bis 17 (Stunden beginnend von 09:00 bis 17:00) für Wochentage sind auf 1 eingestellt, während andere auf 0 festgelegt sind. Während der Spitzenzeiten werden zwei nicht zugewiesene Maschinen gestartet (wenn verfügbar).

$logId = Start-LogHighLevelOperation ` -Text "Create PvD desktop group" ` -Source "Create PvD Desktop Group Script" 

Start einer neuen Protokollierung. Hierbei wird eine Protokoll-ID zurückgegeben, die an nachfolgende Vorgänge übergeben wird, um sie der Aufgabe zum Erstellen von Gruppen zuzuordnen.

$grp = New-BrokerDesktopGroup ` -DesktopKind 'Private' ` -DeliveryType 'DesktopsOnly' ` -LoggingId $logId.Id ` -Name $GroupName ` -PublishedName $GroupName ` -SessionSupport 'SingleSession' ` -ShutdownDesktopsAfterUse $False $count = Add-BrokerMachinesToDesktopGroup ` -Catalog $SrcCatalog ` -Count $NumDesktops ` -DesktopGroup $GroupName ` -LoggingId $logId.Id "$count machines added to the PvD desktop group"

Erstellt die neue Bereitstellungsgruppe und stellt private Desktops bereit. Der verwendete Katalog muss passende Maschinen enthalten (permanent mit einem PvD-Datenträger). PublishedName ist der Name, der Endbenutzern angezeigt wird. Im Folgenden wird der Name als Gruppenname verwendet.

New-BrokerAssignmentPolicyRule ` -DesktopGroupUid $grp.Uid ` -IncludedUserFilterEnabled $False ` -LoggingId $logId.Id ` -MaxDesktops 1 ` -Name ($GroupName + '_AssignRule') ` | Out-Null

Zugewiesene Desktops benötigen eine Zuordnungsrichtlinie. Deaktivieren Sie den Benutzerfilter, damit der Zugriff vollständig von Zugriffsrichtlinienregeln gesteuert wird.

New-BrokerAccessPolicyRule ` -AllowedConnections 'NotViaAG' ` -AllowedProtocols @('HDX','RDP') ` -AllowRestart $True ` -DesktopGroupUid $grp.Uid ` -IncludedSmartAccessFilterEnabled $True ` -IncludedUserFilterEnabled $True ` -IncludedUsers $Users ` -LoggingId $logId.Id ` -Name ($GroupName + '_Direct') ` | Out-Null New-BrokerAccessPolicyRule ` -AllowedConnections 'ViaAG' ` -AllowedProtocols @('HDX','RDP') ` -AllowRestart $True ` -DesktopGroupUid $grp.Uid ` -IncludedSmartAccessFilterEnabled $True ` -IncludedSmartAccessTags @() ` -IncludedUserFilterEnabled $True ` -IncludedUsers $Users ` -LoggingId $logId.Id ` -Name ($GroupName + '_AG') ` | Out-Null  

Geben Sie Zugriffsbeschränkungen an: Ermöglichen Sie direkten Zugriff über NetScaler Gateway mit HDX- und RDP-Protokollen. Der Benutzer kann bei Bedarf einen Neustart des Desktops anfordern.

New-BrokerPowerTimeScheme ` -DaysOfWeek 'Weekdays' ` -DesktopGroupUid $grp.Uid ` -DisplayName 'Weekdays' ` -LoggingId $logId.Id ` -Name ($GroupName + '_Weekdays') ` -PeakHours $peakHours ` -PoolSize $weekdayPoolSizeByHour ` | Out-Null New-BrokerPowerTimeScheme ` -DaysOfWeek 'Weekend' ` -DesktopGroupUid $grp.Uid ` -DisplayName 'Weekend' ` -LoggingId $logId.Id ` -Name ($GroupName + '_Weekend') ` -PeakHours $peakHours ` -PoolSize $weekendPoolSizeByHour ` | Out-Null 

Optional: Geben Sie Energiezeitpläne an.

Stop-LogHighLevelOperation -HighLevelOperationId $logId.Id -IsSuccessful $True 

Beendet die Konfigurationsprotokollierung und gibt an, ob der Vorgang erfolgreich war oder nicht.