【发布时间】:2020-08-03 19:31:43
【问题描述】:
我正在尝试使以下 PowerShell 命令工作但失败了。任何人都知道如何使它工作?
我知道 Expression 标签中有问题,但不知道是什么。
Get-BrokerDesktop -MaxRecordCount 5000 | Where{($_.LastConnectionUser -eq $null) -and ($_.AssociatedUserNames -ne $null)} | Select MachineName,@{ Name = 'CreationDate'; Expression = {Get-ProvVM -MaxRecordCount 5000 -Filter "VMName -eq $_.HostedMachineName" | Select CreationDate}} | ft -AutoSize
它只给出第一列输出。显示了第二列名称但没有数据。
如果我如下单独运行第二个命令,我会得到输出。
Get-ProvVM -MaxRecordCount 5000 -Filter "VMName -eq 'ComputerName'" | Select CreationDate
HostedMachineName 是 Get-BrokerDesktop 的属性。VMName 是 Get-ProvVM 的属性。
【问题讨论】:
-
似乎
-Filter使用不正确。大多数命令期望过滤器值是一个字符串。 Powershell 不会将您的过滤器正确标记为字符串。 -
不确定从这些命令返回的对象,但可以尝试:
$(Get-ProvVM -MaxRecordCount 5000 -Filter (VMName -eq $_.HostedMachineName)).CreationDate -
@mjsqu,谢谢你的建议,但没用 :-(
-
@AdminOfThings,如果
-Filter不是前面的路,我也可以使用Where。 -
试试
"VMName -eq '$($_.HostedMachineName)'"
标签: powershell powershell-3.0 powershell-4.0