Попытка сценария добавления пользователей в группу - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь создать простой скрипт, который автоматизирует членство в группе безопасности для моей организации. Я думаю, что мои переменные возвращаются пустыми и, вероятно, либо определены неправильно, либо я как-то испортил синтаксис. Надеясь, что кто-то здесь может помочь мне увидеть ошибку по-моему!

Я собираюсь отредактировать код ниже, чтобы лучше объяснить мою проблему. Атрибут, который я вызываю, может иметь значение M или оно равно нулю.

Если я запускаю следующую команду, я получаю список пользователей, у которых extension_tribute6 = M

get-aduser -filter {extensionattribute6 -like 'M*'}

Если я попытаюсь добавить в раздел, который указывает OU, результаты становятся нулевыми. Я предполагаю, что все, что я спрашиваю, это если есть синтаксическая ошибка с OU или, если нет, если кто-то может рискнуть предположить относительно того, что я делаю неправильно. :)

$OU = "ou=ou1,ou=ou2,ou=ou3,dc=dc1,dc=dc2"
get-aduser -filter {extensionattribute6 -like 'M*'} -searchbase $OU

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Когда вы используете оператор filter и like, вы должны использовать * в правой части оператора.

$managers = Get-ADUser -SearchBase $OU -Filter "extensionattribute6 -like 'M*'"

Это добавит список AD Users, значение которого начинается с М в расширении атрибута 6. Если вы не добавите * к правой стороне, 'M', то он будет искать всех пользователей со значением extensionAttribute6, которое равно M.

Если вы сравниваете их с быть равным, то вы можете использовать -eq для равенства (без звездочек * внутри кавычки)

$managers = Get-ADUser -SearchBase $OU -Filter "extensionattribute6 -eq 'M'"

Если у вас есть несколько спецификаций c OU, которые вы хотите go закончить, могу ли я предложить использовать список этих подразделений и их перебор.

$OUs = @()
$OUs += "OU=OU1,DC=domain,dc=com"
$OUs += "OU=OU2,OU=someParent,dc=domain,dc=com"
...

$managers = @()
foreach($OU in $OUs) {
  $managers += Get-ADUser -SearchBase $OU -Filter "extensionattribute6 -eq 'M'"
}
0 голосов
/ 21 января 2020

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

Код, на котором я остановился, выглядит следующим образом.

$Managers = @()
$Managers += get-aduser -filter * -searchbase "ou=ou1,ou=ou2,ou=ou3,dc=dc1,dc=dc2" -properties extensionattribute6 | where-object{$_.extensionattribute6 -like 'M*'}
foreach ($Manager in $Managers) {add-adgroupmember -identity <groupname> -members $Manager}
...