Product Documentation

Ejemplo: Cómo crear un escritorio con PvD

Nov 11, 2015

Este tema ofrece un ejemplo de script para crear un grupo de entrega que contiene escritorios con Personal vDisk (PvD).

Antes de comenzar, compruebe que sigue los pasos detallados en Introducción a SDK. Este tema muestra cómo usar Studio para realizar la operación que desea incluir en el script y recopilar el registro de operaciones del SDK que realizó Studio para llevar a cabo la tarea. Este resultado puede personalizarse para generar un script que automatice la tarea.

Nota: Para asegurarse de que siempre obtiene las últimas mejoras y revisiones, Citrix recomienda seguir el procedimiento descrito en este tema en lugar de copiar y pegar el script de ejemplo.

Entender el script

La siguiente sección explica qué hace cada parte del script generado por Studio. Esto le ayudará con la personalización de su propio script. Se han agregado los números y los saltos de línea al script para una mejor legibilidad.

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

Inicia una operación registrada y devuelve un ID de registro que se suministra a las operaciones subsiguientes para asociarlas a la tarea más grande.

2. New-BrokerDesktopGroup -AdminAddress 'test-ddc.midominio.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'

Crea un nuevo grupo de entrega con opciones recopiladas por el asistente de Studio.

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

Agrega al grupo de entrega la cantidad de máquinas solicitadas desde el catálogo designado.

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.midominio.com:80' -Filter {(SID -in $brokerUsers)} -MaxRecordCount 2147483647 Remove-Variable -Name 'brokerUsers' New-BrokerUser -AdminAddress 'test-ddc.midominio.com:80' -Name 'MYDOMAIN\user1' New-BrokerUser -AdminAddress 'test-ddc.midominio.com:80' -Name 'MYDOMAIN\user2'

Los comandos anteriores no son necesarios, Studio está verificando los usuarios.

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

Studio comprueba que el nombre de asignación de directiva está disponible para ser utilizado.

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

Crea la nueva regla de asignación de directiva para el grupo de entrega. No se especifican usuarios aquí; todo el control se realiza a través de la regla de directiva de acceso.

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.midominio.com:80' -Filter {(SID -in $brokerUsers)} -MaxRecordCount 2147483647 Remove-Variable -Name 'brokerUsers' New-BrokerUser -AdminAddress 'test-ddc.midominio.com:80' -Name 'MYDOMAIN\user1' New-BrokerUser -AdminAddress 'test-ddc.midominio.com:80' -Name 'MYDOMAIN\user2' 

Los comandos anteriores no son necesarios, Studio está realizando más comprobaciones.

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

Studio comprueba que el nombre de directiva de acceso está disponible para ser utilizado.

9. New-BrokerAccessPolicyRule -AdminAddress 'test-ddc.midominio.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'

Crea la regla de directiva de acceso para el nuevo escritorio para conexiones que no se realizan a través de NetScaler Gateway.

10. Test-BrokerAccessPolicyRuleNameAvailable -AdminAddress 'test-ddc.midominio.com:80' -Name @('Win7 PvD Desktops_AG') New-BrokerAccessPolicyRule -AdminAddress 'test-ddc.midominio.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 repite este proceso para conexiones a través de NetScaler Gateway.

11. Test-BrokerPowerTimeSchemeNameAvailable -AdminAddress 'test-ddc.midominio.com:80' -Name @('Win7 PvD Desktops_Weekdays') New-BrokerPowerTimeScheme -AdminAddress 'test-ddc.midominio.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.midominio.com:80' -Name @('Win7 PvD Desktops_Weekend') New-BrokerPowerTimeScheme -AdminAddress 'test-ddc.midominio.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 comprueba que los nombres para los esquemas de energía de fin de semana y de días laborables (optativo) están disponibles y los agrega.

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

Detiene la operación registrada iniciada en el paso 1 e indica que se ha realizado correctamente.

Personalizar el script

Esta sección muestra cómo convertir y adaptar el resultado de Studio en un script más consumible.

El script crea un grupo de entrega que contiene escritorios con PvD. El catálogo especificado en los parámetros debe existir ya, con una asignación de escritorios estáticos y un disco PvD. El script está diseñado para ejecutarse desde una línea de comandos de PowerShell por un administrador Citrix. No se comprueban los permisos; el script falla si el usuario que lo ejecuta no cuenta con los permisos adecuados.

<# Ejemplo de uso: .\CreatePvDGroup.ps1 ` -GroupName "Win7 PvD Desktops" ` -SrcCatalog "win7-pvd" ` -NumDesktops 2 ` -Users @('midominio\usuario1','midominio\usuario2') ` #> Param( [Parameter(Mandatory=$true)] [string] $GroupName, [Parameter(Mandatory=$true)] [string] $SrcCatalog, [Parameter(Mandatory=$true)] [int] $NumDesktops, [Parameter(Mandatory=$true)] [array] $Users [string] $AdminAddress )

La tabla explica los parámetros utilizados en el script.

Parámetro Descripción
GroupName El nombre del nuevo grupo de escritorios con PvD
SrcCatalog El nombre de catálogo que se usará para crear el escritorio con PvD. Cree el catálogo especificando un tipo de asignación estática. Las máquinas deben contar también con discos PvD.
NumDesktops Número de máquinas para agregar al grupo de escritorios con PvD. Si no hay suficientes máquinas disponibles, se agregan todas las posibles.
Users Qué usuarios pueden acceder al grupo. Es una lista de usuarios o grupos; por ejemplo: @('miDominio\Domain Users') o @('miDominio\usuario1','miDominio\usuario2')
Set-HypAdminConnection -AdminAddress $adminAddress

Especifique la conexión de administrador de hipervisor que se debe utilizar. Elimina la necesidad de agregar -AdminAddress en algunos comandos.

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

Esto crea matrices de 24 elementos con 1 o un 0 en cada entrada. Use éstas para especificar cuáles son las horas punta para la programación de energía para los grupos de entrega. Los elementos del 9 al 17 (las horas desde las 09:00 a las 17:00) para los días laborables se establecen con el valor 1, los demás elementos se dejan en 0. Se inician dos máquinas sin asignar durante las horas punta, si están disponibles.

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

Inicie una nueva operación con registro. Esto devuelve un ID de registro que luego se pasa a las operaciones subsiguientes para asociarlas con la tarea general de creación del grupo.

$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"

Cree el nuevo grupo de entrega, para entregar escritorios privados. El catálogo utilizado debe tener ya las máquinas adecuadas (permanentes, con disco PvD. PublishedName es el nombre que verán los usuarios finales; lo siguiente usa el mismo nombre que el nombre de grupo.

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

Los escritorios asignados necesitan una directiva de asignación. Inhabilite el filtro de usuarios para que el acceso esté controlado totalmente por reglas de directiva de acceso.

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  

Especifique las restricciones de acceso: puede permitir acceso directo usando NetScaler Gateway, con protocolos HDX & RDP. El usuario puede pedir que se reinicie el escritorio, si es necesario.

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 

Optativo: Especifique programaciones de control de energía.

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

Detener registro de configuración e indicar si se realizó con éxito o no.