Comandos powershell administración Citrix
Hoy os queremos mostrar varios comandos de powershell que pueden ser muy útiles para gestionar vuestra granja Citrix.
Cargar powershell snapins de Citrix
Cargamos los módulos necesarios para Citrix XenDesktop 7.x
Add-PSSnapin Citrix*
Si nuestra infraestructura está en Citrix XenApp 6.5 podemos cargarlos de la siguiente forma:
Add-PSSnapIn citrix.xenapp.commands
Add-PSSnapIn citrix.common.Commands
Add-PSSnapIn citrix.common.groupPolicy
Una vez cargados los módulos relacionados con Citrix podemos listar los comandos que tenemos cargados:
Get-Command -Module Citrix*
![comandos-powershell-citrix-1]()
Powershell para Citrix Logon
Si queremos saber todos los IDs del sistema:
query session
Una vez tenemos los ids podemos usar el script de Control Up y lanzarlo de la siguiente manera:
Get-LogonDurationAnalysis -Username NombreUsuario -HDXSessionId 8
Si queremos saber qué GPOs se aplican o a qué controlador de domino nos logueamos podemos lanzar:
gpresult /R
Comandos básicos de powershell para Citrix
A continuación, detallamos algunos comandos útiles para la administración de Citrix XenDesktop 7:
VERSIONES
Saber la versión de XenDesktop, lanzamos desde el Delivery Controler:
Get-BrokerController | select DNSName, ControllerVersion
![comandos-powershell-citrix-2]()
Ver versiones de Productos:
Get-ConfigProduct
![comandos-powershell-citrix-6]()
Saber las ediciones de los productos:
Get-ConfigProductVersion –ProductCode XDT
Get-ConfigProductVersion –ProductCode MPS
![comandos-powershell-citrix-7]()
Saber las versiones de los productos:
Get-ConfigProductEdition –ProductCode XDT
Get-ConfigProductEdition –ProductCode MPS
![comandos-powershell-citrix-8]()
SITE
Saber el nombre del Site:
Get-XDSite | select Name
![comandos-powershell-citrix-3]()
También se puede usar:
Get-ConfigSite | select SiteName
![comandos-powershell-citrix-4]()
LICENCIAS
Saber el nombre del servidor de Licencias y otros datos sobre él:
Get-ConfigSite | select LicenseServerName, LicenseServerPort, LicenseServerUri, LicensingBurnIn, LicensingBurnInDate, LicensingModel
Configurar nuevas opciones de la licencia:
Set-ConfigSite -LicensingModel Concurrent -ProductCode MPS -ProductEdition ENT
Configurar puerto y nombre servidor de licencias:
Set-XDLicensing -LicenseServerAddress CTXLYC01 -LicenseServerPort 27001
Comprobar el servidor de licencias en el puerto por defecto (se puede cambiar el puerto). Si está todo OK nos devolverá un “Compatible”:
Test-BrokerLicenseServer –ComputerName ServidorLicencias 27000
DELIVERY CONTROLLER
Listar delivery controller para la zona:
Get-ConfigZone | select Name, ControllerNames
![comandos-powershell-citrix-9]()
APLICACIONES
Saber el nombre de las aplicaciones publicadas y sus argumentos:
Get-BrokerApplication | select ApplicationName, CommandLineExecutable, CommandLineArguments, UUID
![comandos-powershell-citrix-10]()
Obtener datos de la aplicación publicada:
Get-BrokerApplication –BrowserName “Notepad”
![comandos-powershell-citrix-14]()
Borrar aplicación por nombre de todos los Delivery Groups:
$aplicacion = Get-BrokerApplication -BrowserName "Notepad"
$grupo = Get-BrokerDesktopGroup -Name "DesktopGroup"
Remove-BrokerApplication -InputObject $aplicacion -DesktopGroup $grupo
PERMISOS
Saber los grupos o usuarios que se han configurado sobre los escritorios y aplicaciones:
Get-BrokerAccessPolicyRule | select Name, IncludedUsers
![comandos-powershell-citrix-11]()
Listar todas las políticas:
Get-BrokerAccessPolicyRule
Todas las políticas TRUE para un usuario concreto:
Get-BrokerAccessPolicyRule -Enabled $true -IncludedUser domain\usuario
SESIONES
Si queremos ver todas las propiedades disponibles para Get-BrokenSession:
(Get-BrokerSession | Get-Member | ? { $_.MemberType -eq "Property" }).Name
![comandos-powershell-citrix-12]()
Una vez que tenemos los filtros, los utilizamos.
Filtramos por número de uid:
Get-BrokerSession | ?{$_.uid –eq 4}
Filtrado por usuario:
Get-BrokerSession | ? { $_.username -ieq "Domain\usuario" }
Si queremos saber en qué máquinas está conectado y qué ha lanzado:
Get-BrokerSession | ?{$_.username -ieq "ctxsflab\runzue"} | select MachineName, LaunchedViaPublishedName, Uid
![comandos-powershell-citrix-13]()
Get-BrokerSession | ?{$_.username -ieq "ctxsflab\runzue"} | select MachineName, LaunchedViaPublishedName, Uid, UserSID, Protocol
Matar todas las sesiones de un usuario:
Get-BrokerSession -UserName Dominio\Cuenta | Stop-BrokerSession
Matar una sesión de una máquina concreta:
$terminar = Get-BrokerDesktop -DNSName maquina.dominio.com
Stop-BrokerSession $terminar.SessionUid
Desconectar todas las sesiones que lleven más de dos días Disconnected:
Get-BrokerSession -Filter { SessionState -eq 'Disconnected' -and SessionStateChangeTime -lt '-2' } | Stop-BrokerSession
SERVICIOS
Revisar el estado de los servicios:
Get-BrokerServiceStatus
PRELAUNCH
Listar las sesiones prelaunchs dentro de un Delivery Group:
Get-BrokerSessionPreLaunch -DesktopGroupName "DG01"
CAMBIAR ICONO
Podemos descargar desde aquí: http://www.iconarchive.com/
Cargamos el fichero ICO, se generará un EncodedIconData con un
Get-CtxIcon -FileName C:\SOFTWARE\Console.ico | New-BrokerIcon
Listar UIds ICON para Citrix:
Get-BrokerIcon | select EncodedIconData*, Uid
PUBLICACION APLICACIÓN XENAPP DESDE POWERSHELL
Para terminar vamos a publicar una aplicación mediante Powershell:
Primero lanzamos el comando de ayuda sobre el comando que nos permitirá publicarla:
Get-Help New-BrokerApplication
Recordar que hemos cargado un fichero ICO y sabemos su UID:
PS C:\Users> New-BrokerApplication –Name "CMD" -BrowserName "CMD" -ApplicationType "HostedOnDesktop" -PublishedName "CMD" -ClientFolder "Applications" -Enabled $true -CommandLineExecutable "C:\Windows\System32\cmd.exe" -WorkingDirectory "C:\Windows\System32\" -MaxPerUserInstances "1" -DesktopGroup "DGCTXW1201" –IconFromClient "C:\Windows\System32\cmd.exe -IconUid "15"
![comandos-powershell-citrix-16]()
![comandos-powershell-citrix-17]()
La entrada Comandos powershell administración Citrix se publicó primero en VMware Citrix Blog.