当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除

作者:精品下载站 日期:2024-12-14 08:11:01 浏览:18 分类:玩电脑

使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除


[玩转系统] 使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除

当我在客户 Citrix Virtual Apps and Desktops (CVAD) 环境中进行运行状况检查或以其他方式工作时,我经常使用 PowerShell 提示符和脚本来获取所需的信息并执行任务,因为我发现这比使用各种 Citrix 更容易、更快捷或 Microsoft 控制台用于许多操作。

在这篇文章中,我将向您展示我使用的一些带有参数的命令。精通 PowerShell 的好处在于,一旦您知道如何使用 PowerShell 函数或 cmdlet 返回的一种类型的对象进行过滤、排序、显示等,您就可以使用完全相同的知识来处理几乎所有其他 cmdlet所有其他提供商 - 非常值得有时陡峭的学习曲线!

先决条件

在 CVAD 环境中,我们需要 CVAD PowerShell cmdlet,这些 cmdlet 在 Citrix Studio 时安装尽管它们的 msi 安装程序文件单独存在于 CVAD 安装 ISO 上,但已安装,因此如果需要,可以在不使用 Studio 的情况下进行安装。

我通常会将这些安装在“跳箱”上,而不是直接使用交付控制器,因为这会带来资源和稳定性问题的风险(“哎呀,我重新启动了错误的机器”,从来没有管理员说过)。

获取所需 cmdlet 的最简单方法是加载所有内容,尽管在脚本中我建议仅添加所需的特定模块(Get-Command 将告诉您指定的 cmdlet 驻留在哪个模块)。在 1912 LTSR 及更高版本中,我们运行:

Import-Module -Name Citrix*

对于早期版本,模块不可用,我们运行:

Add-PSSnapin -Name Citrix*

请注意,如果您使用 Citrix Cloud,则需要使用远程 PowerShell SDK,而不是 Studio 或 CVAD ISO 中的 MSI。

如果您不在交付控制器上运行此程序(我不建议这样做),则需要记住的另一件事是您需要将 -AdminAddress 与名称一起传递给 CVAD cmdlet /送货控制器的地址。

如果使用 Citrix Cloud,-AdminAddress 的参数必须是本地云连接器。我确信我在 Citrix 文档中读到过,您只需要指定一次,但我遇到了问题,因此为每个调用的 CVAD cmdlet 指定它,尽管通常是通过使用 PowerShell 的“splatting”功能的哈希表因此,如果我需要更改它,或者添加额外的通用参数,我可以在一个地方完成。

另一个潜在的“问题”是,默认情况下 Citrix cmdlet 仅返回 250 条记录,因此如果在大型环境中工作,无论是在用户、VDA、交付组等方面,您可能需要使用 -MaxRecordCount (请记住,您可以使用 Tab 键完成,因此键入 -max 并按 Tab 键或将其保留为“-max ”,因为它没有歧义 - 但不能在脚本中,因为使用缩写时会使它们难以理解)并输入足够大的数,如下图1所示。

[玩转系统] 使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除

图 1:使用 -MaxRecordCount 您可以返回超过默认 250 条记录

在一些示例中,我使用了一个名为“ddc”的字符串类型变量,我已将其设置为交付控制器之一,这样我就不会在屏幕截图中透露其名称。

获取资讯

以下是一些有用的查询,请注意大多数以 Get-Broker 开头。要查看可用的 cmdlet,您可以运行此命令

Get-Command Get-Broker*

或者,输入 Get-Broker 并按 Tab 键循环浏览命令列表,或按 ctrl+空格键在屏幕上显示光标可选择列表,如图 2 所示。

[玩转系统] 使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除

图 2:Get-Broker 会显示所有可用 cmdlet 的光标可选择列表

您还可以对它们使用 Get-Help cmdlet,并带有可选的 -ShowWindow-OnLine 参数,以获取更多详细信息并查看示例他们的用途。

Q1.总共有多少个会话,包括连接的和断开的?

Get-BrokerSession -AdminAddress $ddc -MaxRecordCount 10000 | measure | select count

Q2。活动会话与断开连接会话的细分是什么?

Get-BrokerSession @commonCVADparameters | Group-Object -Property SessionState

[玩转系统] 使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除

图 3:上述命令的输出

“已连接”状态是正在进行登录的状态。

Q3。哪些连接的会话空闲时间超过 30 分钟?

$activeSessions = Get-BrokerSession @commonCVADparameters -SessionState Active
$activeSessions|where IdleDuration -gt "00:30:00"|select machinename,username,client*,starttime,idle* | Out-GridView

另请注意,我们会尽可能在 cmdlet 本身 (-SessionState) 中进行过滤,而不是通过 Where-Object 进行管道传输(别名 where?),因为使用 Where-Object 会检索整个结果集,然后对其进行过滤(图 4),因此速度更快。

[玩转系统] 使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除

图 4:使用上述命令,您会收到所有活动会话的列表

Q4。用户 billybob 何时何地登录?

Get-BrokerSession -UserName guyrleechbillybob @commonCVADparameters | select machinename,client*,DesktopGroupName,CatalogName,starttime

[玩转系统] 使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除

图 5:使用上述命令,您可以检索有关特定用户上次登录的信息

Q5.每个交付组有多少台机器已注册且未处于维护模式?

Get-BrokerMachine -InMaintenanceMode $false -RegistrationState Registered @commonCVADparameters | group DesktopGroupName|select count,name|sort count

[玩转系统] 使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除

图 6:所有已注册但未处于维护模式的 CVAD 机器列表,按交付组排序

Q6.哪些机器拥有最多的用户会话,例如,我们的机器是否超载,或者负载平衡工作正常吗?

Get-BrokerMachine @commonCVADparameters | Sort SessionCount -Descending|select -first 10 machinename, sessioncount, DesktopGroupName, last*|Out-GridView

[玩转系统] 使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除

图 7:Citrix Studio 中显示的具有最多用户会话的计算机列表

Q7.显示交付组统计信息

Get-BrokerDesktopGroup | select Name,Desktop*,Enabled,InMaintenanceMode,Total*|ogv -PassThru

[玩转系统] 使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除

图 8:Citrix Studio 中的交付组统计信息

请注意 -PassThruOut-GridView 的使用,因此网格视图中的选定项目(当按下“确定”时)将在调用 cmdlet 的位置可用。

或者,它们可以通过Set-ClipBoard(别名scb)进行传输,以便将数据粘贴到记事本、电子邮件、OneNote、更改控制注释等中。

[玩转系统] 使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除

图9:可以通过Set-ClipBoard将数据粘贴到记事本中

执行动作

在大多数情况下,我们可以将先前查询的结果通过管道传输到 cmdlet 中以采取操作。但请确保您了解正在执行的操作的含义/影响,并且您仅在选定的会话/用户、计算机等上进行操作,而不是说注销所有 5000 多个当前会话,而不是注销有问题的一个用户!

启用维护模式

Set-BrokerMachine -MachineName GUYRLEECH\GLXA19PVS41 -InMaintenanceMode $true

给用户留言

您甚至可以通过 Send-BrokerSessionMessage 创建自定义通知,如图 10 所示。

Get-BrokerSession -MachineName GUYRLEECH\GLXA19PVS41 @commonCVADparameters | Send-BrokerSessionMessage -Title "Message from Guy Leech" -MessageStyle Critical -Text "Please logoff & back on as an urgent reboot is required"

[玩转系统] 使用 PowerShell 对 CITRIX 虚拟应用程序和桌面进行故障排除

图 10:在 PowerShell 中创建的自定义弹出通知

请注意,这不会提示用户,也不会给他们一个宽限期,因此请确保他们期望他们的会话被注销!

注销特定用户的所有会话

Get-BrokerSession -UserName guyrleech\billybob @commonCVADparameters | Stop-BrokerSession

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯