Здравствуйте!
Вот пример 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-теги.
Если у вас возникнут какие-либо вопросы или проблемы, не стесняйтесь спрашивать!