Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PowerShell in XenDesktop 5

9,960 views

Published on

PowerShell in XenDesktop 5

Published in: Technology
  • Be the first to comment

PowerShell in XenDesktop 5

  1. 1. Jonathan Medd
  2. 2. What is Citrix XenDesktop?
  3. 3. What is Citrix XenDesktop?
  4. 4. How Does It Work?
  5. 5. XenDesktop 5 and PowerShell XenDesktop Management built on top of PowerShell Desktop Studio Management tool issues PowerShell commands behind the scenes Replaces the MFCOM scripting of previous versions (Same story in XenApp 6)
  6. 6. Pre-Requisites for ManagementWorkstation Install Desktop Studio on an admin workstation http://support.citrix.com/article/CTX1275 27
  7. 7. Consists of….PSSnapins and Providers
  8. 8. Consists of….PSSnapins and Providers Total of 330 Cmdlets across all PSSnapins http://support.citrix.com/static/kc/CTX1272 54/help/index.htm
  9. 9. Hypervisor Connections and HostingUnits ProviderSupports the major hypervisors: Citrix XenServer VMware vSphere Microsoft Hyper-V
  10. 10. Hypervisor Connections and HostingUnits Provider
  11. 11. Hypervisor Connections and HostingUnits ProviderManage with standard PowerShellcmdlets: Get-Childitem, Get-Item New-Item Set-Item Rename-Item Remove-Item
  12. 12. Hypervisor Connections and HostingUnits ProviderGive slightly more cmdlet feel with thesefunctions: Function Get-HypervisorConnection {Get-ChildItem xdhyp:Connections} Function Get-HostingUnit {Get-Childitem xdhyp:HostingUnits}
  13. 13. Demo: Create a Hypervisor Connectionand a Hosting Unit $HypConn = New-Item -Path xdhyp:Connections -Name vCenter01 -HypervisorAddress http://vcenter01.sunnydale.local/sdk -UserName XenDesktop -Password Password01 -ConnectionType vCenter –Persist New-Item -Path xdhyp:HostingUnits -Name pESX02 - HypervisorConnectionName vCenter01 -RootPath XDHyp:ConnectionsvCenter01HQ.datacenterPhysical.fold erpesx02.sunnydale.local.computeresource -NetworkPath "XDHyp:ConnectionsvCenter01HQ.datacenterPhysical.fol derpesx02.sunnydale.local.computeresourceVM Network 20.network" -StoragePath "XDHyp:ConnectionsvCenter01HQ.datacenterPhysical.fol derpesx02.sunnydale.local.computeresourcepESX02_Local .storage“ New-BrokerHypervisorConnection - HypHypervisorConnectionUid $HypConn.HypervisorConnectionUid
  14. 14. Demo: Create a Hypervisor Connectionand a Hosting Unit
  15. 15. All actions in Desktop Studio RunPowerShell Under the Hood
  16. 16. Demo: All actions in Desktop Studio RunPowerShell Under the Hood • Remove Hypervisor Connection
  17. 17. Managing Administrators • New-BrokerAdministrator -BrokerAdmin $False -Enabled $True -FullAdmin $True -Name SUNNYDALEXenDesktopAdmins -ProvisioningAdmin $False -ReadOnly $False -AdminAddress DDC01.sunnydale.local:80‘ • Set-BrokerAdministrator -Name SUNNYDALEXenDesktopAdmins -BrokerAdmin $False -Enabled $False -FullAdmin $True -ProvisioningAdmin $False -ReadOnly $False -AdminAddress DDC01.sunnydale.local:80
  18. 18. Demo: Managing Administrators
  19. 19. Create a Catalog$CatalogName = "Windows 7 Catalog“ #Name of the catalog that will be created$CatalogDescription = "Windows 7 MCS Catalog" #Description given to the catalog$DeviceNamingScheme = "Win7-#" #Naming scheme for the MCS-created VMs$DeviceNamingSchemeType = "Numeric" #Naming scheme type for the MCS-created VMs$DeviceOU = "OU=Workstations,DC=sunnydale,DC=local" #Active Directory OU where the MCS-created VMs will be placed$DeviceDomain = "sunnydale.local" #Active Directory Domain where the MCS-created VMs will be managed$MasterVMName = "Win7Image" #Name of the "Master VM" that will be used with MCS$NumDeviceAccounts = 1 #Create 1 VM with MCS using the naming scheme defined above$DeviceStartIndex = 1 #VM names should start with an index of 1$VMCpuCount = 1 #Two vcpus for each MCS-created VM$VMMemoryMB = 1024 #1GB ram for each MCS-created VM$HostUnitName = "pESX02" #vSphere "host" as listed in the Hosts node of the Desktop Studio Console$DDCAddress = “DDC01.sunnydale.local:80" #DDC the cmdlets will connect to http://blogs.citrix.com/2011/03/24/xendesktop-5- powershell-sdk-primer-part-3-creating-pooled- catalogs-that-leverage-machine-creation-services/
  20. 20. Create a Catalog During Catalog creation you will see the below in Desktop Studio until Catalog has been created
  21. 21. Create a Catalog#Create the catalog container$Catalog = New-BrokerCatalog -AllocationType Random -CatalogKindSingleImage -Name $CatalogName -Description $CatalogDescription -PvsForVM@() -AdminAddress $DDCAddress#Create an identity pool to store the AD computer account info for this catalog.#We are giving the identity pool the same name as the catalog to keep better track$IdentityPool = New-AcctIdentityPool -IdentityPoolName $CatalogName -NamingScheme $DeviceNamingScheme -NamingSchemeType$DeviceNamingSchemeType -OU $DeviceOU -Domain $DeviceDomain -AllowUnicode -AdminAddress $DDCAddress$IdentityPool
  22. 22. Create a Catalog#Get reference to the broker service group$BrokerServiceGroup = Get-ConfigServiceGroup -ServiceType "Broker" -AdminAddress $DDCAddress$BrokerServiceGroup#Add metadata to the broker service group to tie the catalog with the identity pool itis using$MetadataPropertyName ="Citrix_DesktopStudio_BrokerCatalogIdentityPoolReferencePrefix_" + $Catalog.Uid$MetadataPropertyValue = $IdentityPool.IdentityPoolUid$NewMetadata = Add-ConfigServiceGroupMetadata -ServiceGroupUid$BrokerServiceGroup.ServiceGroupUid -Property $MetadataPropertyName -Value$MetadataPropertyValue -AdminAddress $DDCAddress
  23. 23. Create a Catalog#Get reference to the hosting unit and hypervisor connection it uses$HostUnitPath = xdhyp:hostingunits + $HostUnitName$HostUnit = Get-Item -Path $HostUnitPath$HypConnection = Get-BrokerHypervisorConnection -Name$HostUnit.HypervisorConnection.HypervisorConnectionName -AdminAddress$DDCAddress
  24. 24. Create a Catalog#Create a snapshot of the master VM image$SnapshotName = "Citrix_XD_" + $CatalogName$MasterVMPath = "XDHyp:hostingunits" + $HostUnit.HostingUnitName + "" +$MasterVMName + ".vm"$Snapshot = New-HypVMSnapshot -SnapshotName $SnapshotName -LiteralPath$MasterVMPath -AdminAddress $DDCAddress
  25. 25. Create a Catalog#Create a provisioning scheme that defines the details of the MCS cloned VMs.#This process creates a copy of the snapshot and can take several minutes tocomplete.#Note: New-ProvScheme returns a GUID that represents the TaskID for the copytask.$ProvSchemeName = $CatalogName + "_" + $HostUnit.HostingUnitName$SnapshotPath = $MasterVMPath + "" + $SnapshotName + ".snapshot“$ProvSchemeTask = New-ProvScheme -ProvisioningSchemeName$ProvSchemeName -HostingUnitName $HostUnit.HostingUnitName -IdentityPoolName $IdentityPool.IdentityPoolName -VMCpuCount $VMCpuCount -VMMemoryMB $VMMemoryMB -CleanOnBoot -MasterImageVM $SnapshotPath -RunAsynchronously -AdminAddress $DDCAddress
  26. 26. Nearly there!
  27. 27. Create a Catalog#Update the catalog with what provisioning scheme and hosting unit it is using$ProvScheme = Get-ProvScheme -ProvisioningSchemeName $ProvSchemeName -AdminAddress $DDCAddress$PvsForVM = $ProvScheme.ProvisioningSchemeUid.ToString() + ":" +$ProvScheme.HostingUnitUid.ToString()Set-BrokerCatalog -Name $strCatalogName -PvsForVM $strPvsForVM -AdminAddress $strDDCAddress
  28. 28. Create a Catalog#Create machine accounts in Active Directory from info stored in the identity pool.#After running this command, the machine accounts should be visible within theActive Directory "Users and Computers" snap-in.$Accounts = New-AcctADAccount -IdentityPoolName$IdentityPool.IdentityPoolName -Count $NumDeviceAccounts -StartCount$DeviceStartIndex -AdminAddress $DDCAddress
  29. 29. Create a Catalog#Associate controllers (DDC Servers) to the provisioning scheme.$ProvScheme = Add-ProvSchemeControllerAddress -ProvisioningSchemeName$ProvScheme.ProvisioningSchemeName -ControllerAddress $DDCAddress -AdminAddress $DDCAddress#Create virtual desktop VMs from the info specified by the provisioning scheme.After executing this command, the VMs will show up in the hypervisor.$ProvVMTask = New-ProvVM -ProvisioningSchemeName$ProvScheme.ProvisioningSchemeName -ADAccountName$Accounts.SuccessfulAccounts -RunAsynchronously -AdminAddress $DDCAddress
  30. 30. Create a Catalog#Loop though the newly provisioned VMs, "lock" them, and add them to the catalog$ProvVMs = Get-ProvVM -ProvisioningSchemeName $ProvScheme.ProvisioningSchemeName-AdminAddress $strDDCAddressif ($ProvVMs -ne $null) { foreach ($ProvVM in $ProvVMs) { #Lock VM in the provisioning scheme with a tag called "Brokered" (so it cannot beremoved without being unlocked first) $LockVM = Lock-ProvVM -ProvisioningSchemeName$ProvScheme.ProvisioningSchemeName -VMID $ProvVM.VMId -Tag "Brokered" -AdminAddress $DDCAddress #Add VM to the catalog created above $BrokerMachine = New-BrokerMachine -CatalogUid $Catalog.Uid -HostedMachineId$ProvVM.VMId -HypervisorConnectionUid $HypConnection.Uid -MachineName$ProvVM.ADAccountSid -AdminAddress $DDCAddress if ($BrokerMachine -ne $null){ Write-Host "Successfully added" $ProvVM.ADAccountName "to the"$Catalog.Name "catalog..."} else{ Write-Host "ERROR: Could not add" $ProvVM.ADAccountName "to the"$Catalog.Name "catalog..." } }}
  31. 31. Create a Catalog – Finished!
  32. 32. Bonus: Automate the DDC Installhttp://www.jonathanmedd.net/2012/06/automating-the-install-of-xendesktop-ddc-with-powershell.html
  33. 33. Resources Windows PowerShell Bible 2.0 - XenDesktop chapter Citrix Blog Series – XenDesktop 5 PowerShell SDK Primer  Part 1 – Getting Started  Part 2 – Creating Hypervisor Connections and Hosts  Part 3 – Creating Pooled Catalogs with MCS  Part 4 – Creating Pool Physical Catalogs

×