Я пытаюсь изменить свойства AD (Windows VPN, то есть службу маршрутизации и удаленного подключения) пользователей, которые являются членами какой-либо группы AD. Здесь все в порядке. Но при этом мне нужно исключить изменение свойств тех пользователей, которые имеют дополнительное членство в каких-то других группах. Допустим, все пользователи находятся в группе «Офис». Я могу отключить VPN для них всех с помощью приведенного ниже сценария. Но в группе также находятся пользователи, которые дополнительно входят в группу «VPN всегда включен». Как исключить их из действия скрипта.
Вот мой рабочий скрипт (без исключения):
Get-ADGroupMember -Identity "Office" | where {$_.objectclass -eq "user"} | foreach { Set-ADUser -Identity $($_.distinguishedName) -clear msnpallowdialin}





Там почти наверняка лучший способ сделать это, но...
Удалите -WhatIf, чтобы действительно внести изменения
Get-ADGroupMember -Identity "Office" | where {$_.objectclass -eq "user"} | ForEach {
Get-ADUser -Identity $_ -Properties memberof , msnpallowdialin | Where-Object {!($_.memberof -like "*VPN USer Group*")} | Set-ADUser -Clear msnpallowdialin -whatif
}
Извините, забыл добавить параметр Identity - см. отредактированный скрипт выше.
Очень странно. Оператор подобно работает, а не как нет. Но мне это нужно. Похоже, что не как просто не «видит» соответствующий текст в строке член. Тестировал много. Другие операторы, такие как (не)соответствие, (не)содержит и т. д., тоже не работают. Любые идеи или обходные пути?
Теперь это работает! Было бы неплохо заменить не как на {!(..-подобно)}. Я вообще забыл про этот метод. Теперь скрипт успешно сбрасывает VPN на всех пользователей группы "Офис" и не трогает пользователей исключенной группы. Спасибо!
Спасибо за быстрый ответ! К сожалению, скрипт требует «Фильтр:», чтобы идти дальше. Пробовал разные фильтры и другие варианты скрипта, но безрезультатно. Я также пытался по-разному реализовать вашу идею $_.memberof. Но не повезло. Я могу заставить скрипт работать без ошибок и даже с изменениями мснпаллоудиалин, но я не могу заставить работать исключение. Пробовал также создавать переменные с $ плохие списки (исключенные группы) и разными типами для каждого. Тоже без везения.