Главная > System Center > Назначение членства в группе локальных администраторов с помощью SCCM

Назначение членства в группе локальных администраторов с помощью SCCM

10 февраля 2016

Обычно для управления членством в группе локальных администраторов используют средства GPO.
К сожалению групповые политики недостаточно гибки, в частности не позволяют на некоторые ПК назначить администраторами отдельных пользователей и только их.

Для этого можно воспользоваться средствами SCCM.
Создаем новый Configuration Items с именем, например, «Local Administrators Group Item».
В нем создаем новый Settings c именем, например, «Set Local Administrators for Russian LIP»
Setting type: Script
Data type: Boolean

assign-local-administrators-group-1

Добавим Discovery script (Windows PowerShell):

 
$useraffinity = gwmi -Namespace root\ccm\policy\machine -Class ccm_useraffinity
$users = "localadm","DOMAIN\Domain Administrators","DOMAIN\Local Administrators"
foreach ($useraff in $useraffinity) { $users += $useraff.ConsoleUser }
 
 
$members = net localgroup "Администраторы" | where {$_ -AND $_ -notmatch "Команда выполнена успешно"} | select -skip 4
New-Object PSObject -Property @{
 Computername = $env:COMPUTERNAME
 Group = "Администраторы"
 Members=$members
} | out-null
 
$adminusers = $true
foreach ($useradm in $users)
{
 if (!($members -contains $useradm))
 { 
 $adminusers = $false
 break;
 }
}
 
foreach ($useradm in $members)
{
 if (!($users -contains $useradm))
 { 
 $adminusers = $false
 break;
 }
}
write-host $adminusers

Этот скрипт проверяет наличие в локальной группе «Администраторы» доменных групп «DOMAIN\Domain Administrators и «DOMAIN\Local Administrators», встроеной учетной записи администратора (в примере переименована в «localadm»), а также «Primary Users» для данного ПК.
Скрипт предназначен для русcкоязычной Windows, в других локализациях имя группы будет другое.

Если состав группы отличается от заданого будет запущен Remediation script -Для этого мы позднее создадим «Compliance Rule».

Добавим Remediation script (Windows PowerShell):

 
$useraffinity = gwmi -Namespace root\ccm\policy\machine -Class ccm_useraffinity
$users = "localadm","DOMAIN\Domain Administrators","DOMAIN\Local Administrators"
 
foreach ($useraff in $useraffinity) { $users += $useraff.ConsoleUser }
 
$domain = $env:USERDOMAIN
$adsi = [ADSI]”WinNT://./Администраторы,group$members = net localgroup "Администраторы" | where {$_ -AND $_ -notmatch “Команда выполнена успешно”} | select -skip 4
 
New-Object PSObject -Property @{
 Computername = $env:COMPUTERNAME
 Group = “Администраторы”
 Members=$members
} | out-null
 
foreach ($useradm in $users)
{
    if ((([Array]$members) -contains $useradm) -eq $false)
    {
        $adsi.Add("WinNT://$Domain/" + ($useradm -Replace ("$($domain)\\","")) + ",group")
    }
}
 
foreach ($useradm in $members)
{ 
    if ((([Array]$users) -contains $useradm) -eq $false)
    {
        try { $adsi.Remove("WinNT://$Domain/" + ($useradm -Replace ("$($domain)\\",""))) } 
catch { $adsi.Remove("WinNT://$useradm") }
    }
}

Данный скрипт добавит в локальную группу «Администраторы» доменные группы «DOMAIN\Domain Administrators и «DOMAIN\Local Administrators», а также «Primary Users» для данного ПК.
Если в локальной группе «Администраторы» были другие учетные записи — они будут исключены.

Добавим Complianсe Rule c именем, например, «Local Administrators rule»

assign-local-administrators-group-rule

После этого Создаем Configuration Baseline
Добавляем ранее созданный Item и разворачиваем Baseline на нужную коллекцию.

assign-local-administrators-group-baseline

Данный способ удобен тем что добавляет возможность централизовано управлять членством в группе локальных администраторов просто назначая Primary Users через консоль SCCM.

assign-local-administrators-group-primary-users

Комментирование отключено.