У кого-нибудь есть шаблон PowerShell для конкретного сценария?

Доброго времени суток! Не могли бы вы поделиться примером шаблонного скрипта на PowerShell, который позволяет извлекать список всех включенных компьютеров из Active Directory? Мне нужно, чтобы скрипт создавал таблицу с колонками "Имя ПК" и "Состояние" с указанием, что компьютер включен, и затем отправлял результат на электронную почту. Учитывая, что я не имею опыта работы с PowerShell и редко использую Windows, буду признателен за любую помощь.
  • 2 октября 2024 г. 9:53
Ответы на вопрос 2
Здравствуйте!

Вот пример PowerShell-скрипта, который извлекает список всех компьютеров из Active Directory, проверяет их состояние, создает таблицу с указанием имени компьютера и состояния (включен или выключен), а затем отправляет результат на электронную почту.

Перед запуском убедитесь, что у вас установлены необходимые модули, такие как Active Directory и что вы имеете права для выполнения этих команд.

```powershell
# Параметры для отправки электронной почты
$smtpServer = "smtp.yourserver.com"
$smtpFrom = "[email protected]"
$smtpTo = "[email protected]"
$smtpSubject = "Отчет о состоянии компьютеров"
$smtpBody = ""

# Импорт модуля Active Directory
Import-Module ActiveDirectory

# Получаем все компьютеры из Active Directory
$computers = Get-ADComputer -Filter * | Select-Object -Property Name

# Создаем массив для хранения результатов
$results = @()

foreach ($computer in $computers) {
    # Проверяем доступность компьютера
    $status = Test-Connection -ComputerName $computer.Name -Count 1 -Quiet

    # Добавляем информацию о компьютере и его состоянии в массив
    $results += [PSCustomObject]@{
        "Имя ПК"      = $computer.Name
        "Состояние"   = if ($status) { "Включен" } else { "Отключен" }
    }
}

# Преобразуем результаты в таблицу
$smtpBody = $results | Format-Table -AutoSize | Out-String

# Отправляем электронное письмо
Send-MailMessage -SmtpServer $smtpServer -From $smtpFrom -To $smtpTo -Subject $smtpSubject -Body $smtpBody -BodyAsHtml

Write-Output "Отчет отправлен на $smtpTo"
```

### Примечания:

1. **Измените параметры SMTP**: Замените параметры `$smtpServer`, `$smtpFrom` и `$smtpTo` на ваши собственные значения электронной почты и SMTP-сервера.
   
2. **Права доступа**: Убедитесь, что у вас есть необходимые права для доступа к Active Directory, а также для выполнения `Test-Connection`.

3. **Запуск скрипта**: Чтобы запустить скрипт, сохраните его в файл с расширением `.ps1` и выполните в PowerShell с необходимыми правами. Возможно, вам понадобятся права администратора для выполнения некоторых команд.

4. **Форматирование тела письма**: Здесь форматирование тела письма производится в текстовом формате. Если хотите отправлять в HTML-формате, можно изменить `-BodyAsHtml`, добавив соответствующие HTML-теги.

Если у вас возникнут какие-либо вопросы или проблемы, не стесняйтесь спрашивать!
Я с powershell увы не работал и вообще с Windows редко дело имел.
Тогда вам сюда
Похожие вопросы