Перейти к содержимому

Как найти включённого локального администратора на серверах в AD.

Задача провести аудит и убедиться что локальный администратор выключен на серверах.

# Получить список всех серверов в AD
$computers = Get-ADComputer -Filter {OperatingSystem -like "Windows Server*"} -Properties Name
 
# Определить имя пользователя, который будет использоваться для выполнения удаленных команд
$credential = Get-Credential
 
# Создать массив для хранения результатов
$results = @()
 
# Пройти по списку серверов и выполнить команду на каждом из них
foreach ($computer in $computers) {
    $computerName = $computer.Name
 
    # Проверить доступность сервера
    if (Test-Connection -ComputerName $computerName -Count 1 -Quiet) {
        $session = New-PSSession -ComputerName $computerName -Credential $credential
 
        # Искать учетную запись локального администратора
        $localAdmin = Invoke-Command -Session $session -ScriptBlock {
            $admins = Get-WmiObject -Class Win32_Group -Filter "LocalAccount=True AND SID='S-1-5-32-544'"
            $admins | ForEach-Object { $_.GetRelated('Win32_UserAccount') } | Select-Object -ExpandProperty Name
        }
 
        Remove-PSSession -Session $session
 
        if ($localAdmin) {
            $results += [PSCustomObject]@{
                ComputerName = $computerName
                LocalAdministrator = $localAdmin
            }
        }
    } else {
        $results += [PSCustomObject]@{
            ComputerName = $computerName
            Status = "Unreachable"
        }
    }
}
 
# Вывести результаты
$results | Format-Table -AutoSize

 

Similar Posts:

Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *