0

Powershell 中是否有任何类似于 sql. 如果可用,请让我知道如何使用它的语法。我的情况是我需要获取一个 id 列表并在另一个查询中使用它。

寻找在下面做

//Below line i veried returns values more than 1
$desktopGroupIds = Get-BrokerDesktopGroup -AdminAddress 'IPAddressgoeshere' |  select uid

Get-BrokerPrivateDesktop  -AdminAddress 'IPAddressgoeshere' | Where { $desktopGroupIds.contains($_.DesktopGroupUid) } | select DesktopGroupUid

第二个查询不返回值。如果我一一传递值,我相信第二个查询可以给出结果。我想使用可能是“-in”运算符(如果可用)或使上述包含工作。

谢谢,

4

3 回答 3

5

-in是 PowerShell 3.0 中添加的反向-contains运算符(因此 dasari.. 必须更新才能使用它)。With contains 你可以使用$array -contains -element,而在 PS3.0 中你可以使用$element -in $array

你好像有错别字$desktopGroupIdS -c contains $_ .....。尝试这个:

//Below line i veried returns values more than 1
$desktopGroupIds = @(Get-BrokerDesktopGroup -AdminAddress 'IPAddressgoeshere' |  select uid)

Get-BrokerPrivateDesktop  -AdminAddress 'IPAddressgoeshere' | Where { $desktopGroupIds -contains $_.DesktopGroupUid } | select DesktopGroupUid
于 2013-01-31T07:26:11.490 回答
1

Powershell 的“in”关键字通常用于在集合对象中单独选择项目。

例如:

foreach($item in $collection)
{
    #...Process some code...
}

如果您想像在解决方案中一样使用“包含”,您可以通过将第一行放在 @() 中来将 $desktopGroupIds 中的所有内容转换为数组:

例如

//Below line i veried returns values more than 1
$desktopGroupIds = @(Get-BrokerDesktopGroup -AdminAddress 'IPAddressgoeshere' |  select uid)
Get-BrokerPrivateDesktop  -AdminAddress 'IPAddressgoeshere' | Where { $desktopGroupIds.Contains($_.DesktopGroupUid) } | select DesktopGroupUid

编辑

您可能会尝试的另一个解决方案是使用 -match 运算符:

例如:

$desktopGroupIds = @(Get-BrokerDesktopGroup -AdminAddress 'IPAddressgoeshere' |  select uid)
Get-BrokerPrivateDesktop  -AdminAddress 'IPAddressgoeshere' | Where { $desktopGroupIds -match $_.DesktopGroupUid } | select DesktopGroupUid
于 2013-01-31T06:07:22.603 回答
0

修复问题的更新代码行如下所示

Get-BrokerPrivateDesktop  -AdminAddress $regionAddress | Where { $desktopGroupIds  -Contains $_.DesktopGroupUid } | select DesktopGroupUid

注意上面“-Contains”的用法

于 2013-01-31T10:18:26.200 回答