Jonathan Medd
What is Citrix XenDesktop?
What is Citrix XenDesktop?
How Does It Work?
XenDesktop 5 and PowerShell XenDesktop Management built on top of  PowerShell Desktop Studio Management tool issues  Pow...
Pre-Requisites for ManagementWorkstation Install Desktop Studio on an admin  workstation http://support.citrix.com/artic...
Consists of….PSSnapins and Providers
Consists of….PSSnapins and Providers Total of 330 Cmdlets across all PSSnapins        http://support.citrix.com/static/kc/...
Hypervisor Connections and HostingUnits ProviderSupports the major hypervisors: Citrix XenServer VMware vSphere Microso...
Hypervisor Connections and HostingUnits Provider
Hypervisor Connections and HostingUnits ProviderManage with standard PowerShellcmdlets: Get-Childitem, Get-Item New-Item...
Hypervisor Connections and HostingUnits ProviderGive slightly more cmdlet feel with thesefunctions: Function Get-Hypervis...
Demo: Create a Hypervisor Connectionand a Hosting Unit   $HypConn = New-Item -Path xdhyp:Connections -Name    vCenter01 -...
Demo: Create a Hypervisor Connectionand a Hosting Unit
All actions in Desktop Studio RunPowerShell Under the Hood
Demo: All actions in Desktop Studio RunPowerShell Under the Hood  • Remove Hypervisor Connection
Managing Administrators  • New-BrokerAdministrator -BrokerAdmin $False -Enabled    $True -FullAdmin $True -Name    SUNNYDA...
Demo: Managing Administrators
Create a Catalog$CatalogName = "Windows 7 Catalog“                 #Name of the catalog that will be created$CatalogDescri...
Create a Catalog  During Catalog creation you will see the below in Desktop  Studio until Catalog has been created
Create a Catalog#Create the catalog container$Catalog = New-BrokerCatalog -AllocationType Random -CatalogKindSingleImage -...
Create a Catalog#Get reference to the broker service group$BrokerServiceGroup = Get-ConfigServiceGroup -ServiceType "Broke...
Create a Catalog#Get reference to the hosting unit and hypervisor connection it uses$HostUnitPath = xdhyp:hostingunits + $...
Create a Catalog#Create a snapshot of the master VM image$SnapshotName = "Citrix_XD_" + $CatalogName$MasterVMPath = "XDHyp...
Create a Catalog#Create a provisioning scheme that defines the details of the MCS cloned VMs.#This process creates a copy ...
Nearly there!
Create a Catalog#Update the catalog with what provisioning scheme and hosting unit it is using$ProvScheme = Get-ProvScheme...
Create a Catalog#Create machine accounts in Active Directory from info stored in the identity pool.#After running this com...
Create a Catalog#Associate controllers (DDC Servers) to the provisioning scheme.$ProvScheme = Add-ProvSchemeControllerAddr...
Create a Catalog#Loop though the newly provisioned VMs, "lock" them, and add them to the catalog$ProvVMs = Get-ProvVM -Pro...
Create a Catalog – Finished!
Bonus: Automate the DDC Installhttp://www.jonathanmedd.net/2012/06/automating-the-install-of-xendesktop-ddc-with-powershel...
Resources Windows PowerShell Bible 2.0 -  XenDesktop chapter Citrix Blog Series – XenDesktop 5  PowerShell SDK Primer   ...
Upcoming SlideShare
Loading in …5
×

PowerShell in XenDesktop 5

8,491
-1

Published on

PowerShell in XenDesktop 5

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,491
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
124
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×