通过在 Vmware Horizo​​n (PowerCLI) 中输入用户名来获取分配的虚拟机名称

如何解决通过在 Vmware Horizo​​n (PowerCLI) 中输入用户名来获取分配的虚拟机名称

我一直在编写 PowerShell 代码以从所有桌面池中获取 VM 名称

我使用 PowerCLI 并安装了 PowerShell 7。

我设法获得了所有用户及其分配的机器的输出。但是,我在以一种可以输入单个用户名的方式优化代码时遇到了困难,它只会向我显示用户分配的 VM。

这是我目前得到的代码

#Import-Module VMware.VimAutomation.Core
#Import-Module Activedirectory

Connect-VIServer -server servername123 -Force
Connect-HVServer -server server.name.123

$uname = Read-Host -Prompt 'Input the user name you wish to find:' #User-Input

$Global:DefaultHVServers

$query = New-Object "Vmware.Hv.QueryDeFinition"
$query.queryEntityType = 'SessionLocalSummaryView'
$qSrv = New-Object "Vmware.Hv.QueryServiceService"


$PCs = ($qSRv.QueryService_Query($global:DefaultHVServers[0].ExtensionData,$query) | 
Select -ExpandProperty Results |
Select -ExpandProperty NamesData |
Select-Object -Property UserName,MachineOrRDSServerName)


$PCs | % {"$($_.UserName.Split("\")[1]) `t`t $($_.MachineOrRDSServerName) "}

代码的最后一行,我正在格式化表格以删除不必要的内容

$PCs | % {"$($_.UserName.Split("\")[1]) `t`t $($_.MachineOrRDSServerName) "}

有人可以帮我从控制台获取用户名并只显示分配给它们的虚拟机吗?

我尝试在谷歌上搜索解决方案,但找不到任何相关内容

谢谢!!

注意:我已经声明了一个变量 uname 但还没有使用它。我不确定如何在这个用例中使用它。

解决方法

大家好,在最深的 subreddits 中挖掘了更多内容后,我找到了一个帖子,解决了我的问题。

https://www.reddit.com/r/vmware/comments/d547nt/horizon_view_powercli_help/

下面是使用 QueryFilterEquals 的代码 从 VMware.Hv.Equals 类获取用户名及其属性。

我跳过了代码的连接部分,这与问题中提到的相同。

#Get User Input for UserName
$UserName = Read-Host -Prompt 'Input the user name you wish to find:'

#Create Horizon Services object
$HorizonServerServices = $global:DefaultHVServers[0].ExtensionData

#Create Query Definition object with EntityType SessionLocalSummaryView
$HorizonQuery = New-Object VMware.Hv.QueryDefinition
$HorizonQuery.QueryEntityType = 'SessionLocalSummaryView'

#Create Query Filter Object
$QueryFilterEquals = New-Object VMware.Hv.QueryFilterEquals
$QueryFilterEquals.MemberName = 'namesData.userName'
$QueryFilterEquals.value = "domain.loc\$UserName"


$HorizonQuery.Filter = $QueryFilterEquals

$HorizonQueryService = New-Object VMware.Hv.QueryServiceService
$SearchResult = $HorizonQueryService.QueryService_Query($HorizonServerServices,$HorizonQuery)

if ($SearchResult.Results)
{
    $SearchResult.Results.Namesdata
}

我们不必在最后删除查询,因为它不会消耗任何服务器端资源。这是一个虚拟查询。有关 QueryService 工作原理的详细信息,请参阅下面给出的链接。

参考:https://vdc-download.vmware.com/vmwb-repository/dcr-public/e2e25628-4ed2-43fc-8bad-54fb86f3bb0f/8e4d2491-c740-4778-ac43-ba8fc0ec8175/doc/queries-landing.html

感谢您的阅读, 我是 Powershell 编程的新手。任何建议将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?