Professional Documents
Culture Documents
XENDESKTOP 5
Jonathan Medd
http
://support.citrix.com/static/kc/CTX127254/h
elp/index.htm
Managing Administrators
New-BrokerAdministrator -BrokerAdmin $False -Enabled
$True -FullAdmin $True -Name
'SUNNYDALE\XenDesktopAdmins' -ProvisioningAdmin
$False -ReadOnly $False -AdminAddress
'DDC01.sunnydale.local:80
Set-BrokerAdministrator -Name
'SUNNYDALE\XenDesktopAdmins' -BrokerAdmin $False
-Enabled $False -FullAdmin $True -ProvisioningAdmin
$False -ReadOnly $False -AdminAddress
'DDC01.sunnydale.local:80'
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 vcpu's 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-pow
ershell-sdk-primer-part-3-creating-pooled-catalogsthat-leverage-machine-creation-services/
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' -CatalogKind 'SingleImage'
-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
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 it is
using
$MetadataPropertyName =
"Citrix_DesktopStudio_BrokerCatalogIdentityPoolReferencePrefix_" + $Catalog.Uid
$MetadataPropertyValue = $IdentityPool.IdentityPoolUid
$NewMetadata = Add-ConfigServiceGroupMetadata -ServiceGroupUid
$BrokerServiceGroup.ServiceGroupUid -Property $MetadataPropertyName -Value
$MetadataPropertyValue -AdminAddress $DDCAddress
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
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
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 to
complete.
#Note: New-ProvScheme returns a GUID that represents the TaskID for the copy
task.
$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
Nearly there!
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
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 the
Active Directory "Users and Computers" snap-in.
$Accounts = New-AcctADAccount -IdentityPoolName
$IdentityPool.IdentityPoolName -Count $NumDeviceAccounts -StartCount
$DeviceStartIndex -AdminAddress $DDCAddress
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
Create a Catalog
#Loop though the newly provisioned VMs, "lock" them, and add them to the catalog
$ProvVMs = Get-ProvVM -ProvisioningSchemeName $ProvScheme.ProvisioningSchemeName
-AdminAddress $strDDCAddress
if ($ProvVMs -ne $null) {
foreach ($ProvVM in $ProvVMs) {
#Lock VM in the provisioning scheme with a tag called "Brokered" (so it cannot be
removed 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..."
}
}
}
http://www.jonathanmedd.net/2012/06/automating-the-install-of-xendesktop-ddc-with-p
owershell.html
Resources
nd Hosts
Part 3 Creating Pooled Catalogs with MCS
Part 4 Creating Pool Physical Catalogs