Управляємо локальними користувачами за допомогою PowerShell.
Для роботи з доменними користувачами в PowerShell вже давно існує безліч командлетів, але якщо вам потрібно управляти локальними користувачами, то тут основним інструментом як і раніше залишається графічна оснащення (lusrmgr.msc) і стара добра утиліта командного рядка net.Проте, в PowerShell все ж є можливість для управління локальними користувачами на комп'ютерах, що не входять в домен.
Для цього можна скористатися інтерфейсом ADSI (Active Directory Services Interface), який може застосовуватися як для роботи з Active Directory, так і з окремими комп'ютерами.
Розглянемо кілька найбільш актуальних ситуацій при роботі з локальними користувачами
Створення користувача
Перше, що необхідно зробити з користувачем - це створити його обліковий запис. Для цього спочатку отримуємо об'єкт комп'ютера і поміщаємо його в змінну:
[adsi] $ computer = "WinNT: // SRV1"
Потім за допомогою методу Create створюємо користувача з ім'ям LocalAdmin:
$ user = $ computer.Create ( "User", "LocalAdmin")
Встановлюємо прапорець для того, щоб користувач змінив пароль при вході:
$ user.Put ( "PasswordExpired", 1)
Задаємо початковий пароль:
$ user.SetPassword ( "P @ $$ word")
І додаємо опис в полі «Description»:
$ user.Put ( "Description", "Local administrator")
Щоб всі зроблені зміни були застосовані, необхідно виконати команду:
$ user.SetInfo ()
Для перевірки можна вивести список користувачів командою:
$ computer.Children | where {$ _. Class -eq "user"} | ft name, description -auto
Ну або подивитися в графічній оснащенні.
А тепер уявімо, що потрібно встановити прапори «User can not change password» і \ або «Password never expired».Ці настройки зберігаються у властивості користувача UserFlags, яке представляє з себе бітову маску. Для обчислення необхідного значення використовується операція -bor (побітовое АБО), наприклад так ми встановимо прапор «Password never expired»:
$ flag = $ user.UserFlags.Value -bor 0x10000
$ user. Put ( "userflags", $ flag)
$ user.SetInfo ()
Примітка. Значення, необхідні для установки різних прапорів, можна подивитися на сторінці http://msdn.microsoft.com/en-us/library/aa772300(VS.85).aspx
Треба мати на увазі, що при установці одного прапора інші скидаються. Наприклад, якщо встановити прапор «User can not change password» (значення 0x40), то прапор «Password never expired» буде знято.Для того, щоб поставити обидва прапора, необхідно підсумовувати їх значення, наприклад так:
$ flag = $ user.UserFlags.Value -bor 0x10040
$ user.Put ( "userflags", $ flag )
$ user.SetInfo ()
Також необхідно пам'ятати, що прапори « User can not change password »і« Password never expired »несумісні з« User must change password at next logon », тому при установці будь-якого з них він знімається.Це дуже наочно видно в графічній оснащенні.
І ще одна операція, яка зазвичай проводиться при створенні користувача - додавання його в групу. Для прикладу додамо нашого користувача в групу локальних адміністраторів:
[adsi] $ group = "WinNT: // SRV1/Administrators, group"
$ group.Add ($ user.Path)
Перевірити вміст групи можна такої нескладної