Использование (*) в команде 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
,