2016-10-19 11 views
0

Мне интересно, есть ли способ включить или отключить флаг UserAccountControl, несмотря на состояния других флагов. Например, предположим, что мы имеем конфигурацию, как следующее:Изменение флажков UserAccountControl - переключение флага

Admin Flag Configuration

Как бы я только Переключите «Пароль никогда не истекает» флаг в верно, несмотря на текущий $user.UserFlags.value?

Когда все флаги переключаются выключен, $user.UserFlags.value является 513. Когда только «Пароль никогда не истекает» флаг переключается, то $user.UserFlags.value является 66049.

Как вы можете себе представить, существует целый ряд чисел что $user.UserFlags.value может отражать для различных конфигураций, как указано в следующей статье:

How to use the UserAccountControl flags to manipulate user account properties

Я чувствую, что я могу придумать решение, используя побитовое манипуляции с масками, но необходимо некоторое руководство. Моя конечная цель - написать сценарий Power Shell для переключения этого значения независимо от текущей конфигурации.

Любые предложения?

ответ

1

Операция, которую вы ищете, - XOR. Используйте оператор побитовое исключающее ИЛИ (-bxor) приравнивать текущее UserFlags значение с флагом вы хотите переключить (в данном случае 0x10000 или 65536 для флага DONT_EXPIRE_PASSWORD) и зафиксировать изменения:

$user.InvokeSet('UserFlags', $user.UserFlags.Value -bxor 0x10000) 
$user.CommitChanges() 

Для получения дополнительной информации см «Поразрядные операторы» в разделе about_Comparison_Operators.

+0

Совершенный и лаконичный. Большое спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^