Почати оновлення групової політики в домені через powershell - hey, scripting guy! Blog, sergey

Резюме. Microsoft Scripting Guy, Ed Wilson показує, як викликати оновлення групової політики за допомогою PowerShell.

Оновлення групової політики в домені

Іноді я вношу зміни в групову політику в мережі і мені потрібно застосувати зміни на всіх комп'ютерах. А іноді мені потрібно оновити локальну групову політику на моєму комп'ютері.

Для оновлення налаштувань групової політики я використовую утиліту GPUpdate. Вона володіє деякими параметрами. За замовчуванням, утиліта оновлює політику як комп'ютера, так і користувача. Але цим можна управляти, використовуючи параметр / target. Наприклад, якщо мені нудно оновити тільки політику комп'ютера, я вкажу / target: computer. Для поновлення тільки політики користувача - / target: user.

PS C: \> gpupdate / target: computer

Computer Policy update has completed successfully.

За замовчуванням GPUpdate застосовує тільки оновлені налаштування групової політики. Для застосування всіх налаштувань використовується параметр / force. Наведена нижче команда оновлює всі настройки групової політики (незалежно від того, чи були вони змінені) для комп'ютера і користувача.

PS C: \> gpupdate / force

Computer Policy update has completed successfully.

User Policy update has completed successfully.

По-перше, отримуємо список комп'ютерів в домені

Перше, що мені необхідно зробити - це отримати список всіх комп'ютерів в домені. Для цього я використовую командлет Get-ADComputer. що входить в модуль Active Directory.

Замітка: модуль Active Directory входить до складу RSAT.

Я зберігаю отримані об'єкти комп'ютерів в змінній $ cn.

$ Cn = Get-ADComputer -filt *

По-друге, ми створюємо віддалені сесії

Наступне, що мені потрібно зробити - це створити віддалені сесії з усіма комп'ютерами. Для цього мені потрібно надати облікові дані для підключення до комп'ютерів, а також створити самі сесії за допомогою командлета New-PSSession.

Для початку я скористаюся Командлети Get-Credentials і збережу повернутий ним об'єкт в змінній $ cred.

$ Cred = Get-Credential iammred \ administrator

Далі використовуємо командлет New-PSSession. Як параметри я вказав імена комп'ютерів і необхідні облікові дані.

$ Session = New-PSSession -cn $ cn.name -cred $ cred

Необхідно пам'ятати про те, що в домені можуть бути вимкнені комп'ютери, тому при виконанні команди можуть повертатися помилки. Проте, не дивлячись на помилки, Windows PowerShell створює сесії з робочими комп'ютерами.

Почати оновлення групової політики в домені через powershell - hey, scripting guy! Blog, sergey

Наявність великої кількості помилок може вселити деякі побоювання. Оскільки об'єкти сесій зберігаються в змінній $ sessions, я легко можу переконатися в тому, що вони створені.

Почати оновлення групової політики в домені через powershell - hey, scripting guy! Blog, sergey

Тепер запустимо команду на всіх віддалених машинах

Для запуску команди GPUpdate на всіх віддалених машинах я використовую командлет Invoke-Command. Він використовує сесії, збережені нами в змінній $ sessions. Аліас для командлет Invoke-Command - icm.

icm -Session $ session -ScriptBlock

Після запуску команди, результати відображаються в консолі Windows PowerShell.

Почати оновлення групової політики в домені через powershell - hey, scripting guy! Blog, sergey

Підтвердження оновлення групової політики

Коли на робочої станції відбувається успішне оновлення налаштувань групової політики, в журнал System записується подія з кодом 1502. Я можу скористатися Командлети Invoke-Command для отримання цієї інформації.

Команда і її результати наведені на малюнку нижче.

Почати оновлення групової політики в домені через powershell - hey, scripting guy! Blog, sergey

Ще одна цікава річ стосовно групової політики

Іноді мені доводиться дзвонити в техпідтримку і вони просять оновити групову політику на моєму локальному комп'ютері. Це не проблема, так як я можу запустити GPUpdate прямо з PowerShell. Складність виникає тоді, коли вони просять мене виконати оновлення групової політики 5 разів з інтервалом в 5 хвилин. Але і це вирішується за допомогою одного рядка коду.

Почати оновлення групової політики в домені через powershell - hey, scripting guy! Blog, sergey

Ed Wilson, Microsoft Scripting Guy