Использование (*) в команде Where в PowerShell

Я использую эту команду, чтобы получить локального пользователя в группе администраторов, и она работает

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

Но теперь я хочу использовать переменную, подобную этой: $Group="Administrators" $Account="users"

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

но я ничего не получаю обратно

2 ответа

Решение

Если имя группы "Администраторы", вам не нужно использовать подстановочный знак. Звездочка будет соответствовать одному или нескольким символам. Например:

"Administrator*" соответствует Администратор, Администраторы, "Группы администраторов" и т. д.

"*Administrators" соответствует администраторам, "администраторам Windows" и т. д.

"*Administrator*" соответствует администраторам, группам администраторов, администраторам Windows и т. д.

Для второй команды вы можете использовать подвыражение для раскрытия переменной.

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

Это рабочий пример:

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

То же самое можно адаптировать для $_.partcomponent,

Другие вопросы по тегам