最近,客户需要更改Citrix XenDesktop中专用桌面的发布名称属性。默认情况下,发布名称属性为Null。本文将向您展示我掌握的一些花絮和两行PowerShell,可用于更改全部或部分私有桌面的已发布名称属性。1
将计算机添加到DesktopKind为“ Private”的桌面组中时,会自动创建私有桌面,并且这些桌面会继承默认属性。
对于本文,我创建了两个计算机目录,每个目录都有三台永久性计算机,更改保存在本地磁盘上,如图1所示。

我还创建了两个交付组,如图2所示。
有人认为,已发布的私有桌面使用交付组的名称作为用户在StoreFront和Receiver中看到的名称,但并非总是如此。如果未进行任何用户分配,则默认情况下,已发布的专用桌面使用StoreFront和Receiver中的“桌面分配规则”中的“ 显示名称”值,如图3、4和5所示。



从图5中可以看到,StoreFront中未使用传递组的名称,而Receiver中也未使用传递组的名称。为什么?因为尚未进行用户分配,所以如图6和7所示。



如果已进行用户分配(图8),则StoreFront和Receiver中将使用交付组的 发布名称属性值(图9)。


交付组的“ 发布名称”值从何而来?
创建传递组时,“ 发布名称”属性将从传递组的“ 名称”属性获取其初始值。如果您以后重命名传递组,则“ 发布名称”属性的值不会更改。您可以使用Set-BrokerDesktopGroup cmdlet 将传递组的发布名称值设置为所需的任何值。
返回到StoreFront和Receiver中显示的私有桌面名称。
如果只希望显示桌面名称,或者如果允许用户在传递组中使用多个桌面,则可以使用Set-BrokerPrivateDesktop cmdlet更改发布名称值。
如果您有多个具有专用桌面的交付组,而只希望对单个交付组进行此更改,则非常简单。
对于本文,我只希望更改一个交付组。一个传递组使用命名方案Persistent-##,另一个使用testp-##。我希望更改testp桌面。
首先,我将获得所有仅显示DNSName,HostedMachineName,MachineName和PublishedName属性的私有桌面,如图10所示。
1个
|
Get-BrokerPrivateDesktop | select dnsname,hostedmachinename,machinename,publishedname |

这表明所有私有桌面都没有发布名称的值。
注意: 我删除了之前所做的桌面任务。
如果我从StoreFront启动所有三个桌面,从桌面注销,然后重新运行以前的cmdlet,我们将得到图11所示的内容。

我的经验是,即使我在首次启动桌面之前更改了“ 发布名称”属性的值,也会为私有桌面的“ 发布名称”的值写入“分配规则”的“ 显示名称”值。
我发现必须先启动专用桌面,然后才能更改“ 发布名称”属性。
要更改发布名称属性,请使用以下两行PowerShell代码,如图12所示。
注意:要更改所有私有桌面的“发布名称”属性,请使用$ Pattern =“ *”
1个
2
|
$Pattern = "testp*" $Desktops = Get-BrokerPrivateDesktop -filter {HostedMachineName -like $Pattern } ; ForEach ( $Desktop in $Desktops ) { Set-BrokerPrivateDesktop -MachineName $Desktop .MachineName -PublishedName $Desktop .HostedMachineName} |

刷新StoreFront之后,我们得到如图13所示的内容。

我在此阅读的所有论坛帖子和博客都希望在用户启动其私有桌面之后更改“ 发布名称”属性。请注意,如果在用户首次启动其私有桌面之前更改了“ 发布名称”属性,则“ 发布名称”属性的值将被覆盖。显然,Citrix在对其公然改写那里的任何值之前并没有进行安全检查,以查看“ 发布名称”属性是否具有值。思杰做得不好。
谢谢
评论(1)
I appreciate the unique perspective and creativity in your writing.