在PowerShell中的Where命令中使用(*)

时间:2018-04-19 14:23:46

标签: powershell get-wmiobject

我正在使用此命令获取管理员组中的本地用户,并且它可以正常工作

Get-WmiObject -Class Win32_Groupuser -ComputerName $computer |? {$_.groupcomponent -like '*"Administrators"' -and $_.Partcomponent -like '*"User"'}|ft groupcomponent,Partcomponent

但现在我想使用这样的变量  $组=“管理员”    $帐户= “用户”

Get-WmiObject -Class Win32_Groupuser -ComputerName $computer |? {$_.groupcomponent -like *$Group -and $_.Partcomponent -like *$Account}|ft groupcomponent,Partcomponent

但我什么都没有回来

2 个答案:

答案 0 :(得分:2)

如果组名是"管理员"你不需要使用通配符。星号将匹配一个或多个字符。例如:

"Administrator*"与管理员,管理员和管理员匹配    小组"等

"*Administrators"匹配管理员," Windows管理员"等

"*Administrator*"匹配管理员,"管理员组"," Windows管理员"等

对于第二个命令,您可以使用子表达式来扩展变量。

Where-Object { $_.groupcomponent -like "*$($Group)*" }

答案 1 :(得分:1)

这是一个有效的例子:

$Group = '"Administrators"'
Get-WmiObject -Class Win32_Groupuser -ComputerName $computer |? {$_.groupcomponent -like "*$Group"}

同样适用于$_.partcomponent