Передача переменной Powershell в -Filter с использованием Wild Card
Мне трудно здесь, и я знаю, что это, вероятно, простая проблема синтаксиса. Я не знаю, как передать эту переменную в кусок кода и правильно ли она подтверждена.
$user = "Some.Person"
Это работает, как я ожидал.
get-aduser -filter {(Samaccountname -eq $user)}
Это не
get-aduser -filter {(userprincipalname -like $user*)}
пробовал с вариациями "$user*"
, "'$user*'"
а также некоторые другие безрезультатно.
конечный результат будет использоваться следующим образом, потому что у нас есть учетные записи AD, в которых UPN отличается от UserName, и у меня есть полный список значений в формате имени пользователя, которые необходимо подтвердить, все еще существуют с активными учетными записями.
Get-ADUser -Filter {(UserPrincipalName -like "$user*") -or (SamAccountName -eq "$user")} -SearchBase "" -Server "MyServer:3268"
1 ответ
Странное поведение, это не ответ, а поворот вокруг; лично я использую -LDAPFilter
:
Get-ADUser -LDAPFilter "(userprincipalname=$user*)"
Вначале польская запись для фильтра немного смущает, но здесь это естественный способ фильтрации с использованием нижележащего протокола LDAP.
Get-ADUser -LDAPFilter "(|(userprincipalname=$user*)(samAccountName=$user))"
Вы можете получить больше информации об этом синтаксисе в синтаксисе фильтра поиска, вы также можете получить соответствующие фильтры в About_ActiveDirectory_Filter.
Если вы действительно хотите использовать -Filter
Синтаксис вы можете сделать следующее (я не очень горжусь этим):
$userstar = "$user*"
Get-ADUser -Filter {(userprincipalname -like $userstar) -or (samAccountName -like $user)}