Для выключения компьютера в Powershell есть одна команда Stop-Computer. Команда выключает текущий компьютер без какого либо времени ожидания:
Stop-Computer
Можно выключить и удаленные компьютеры, но для этого может понадобиться дополнительная настройка удаленного управления в Powershell.
В большинстве команд Powershell, где есть ключ ComputerName возможно выполнение на удаленном компьютере, в большинстве случаем значений может быть несколько:
Stop-Computer -ComputerName 'AD2','AD1'
Удаленное выполнение команд занимает время и если вы хотите не дожидаться выполнения можете запустить в фоновом процессе:
$shutdown = Stop-Computer -ComputerName "AD1", "AD2" -AsJob
$shutdown | Receive-Job
Если нужно выполнить команду под другой учетной записью можно это сделать с ключом Credential:
$cred = Get-Credential
Stop-Computer -ComputerName 'DNS2','DNS1' -Credential $cred
Если вы выполняете команду не в домене, а в рабочей группе или Linux вам может понадобиться использовать другой способ аутентификации. Для этого есть ключ WsmanAuthentication со значениями:
- Basic
- CredSSP
- Default
- Digest
- Kerberos
- Negotiate
В одной компании у меня был скрипт, который мог выключить все сервера в случае какой-то аварийной ситуации. В основном это были случаи, когда использовались источники бесперебойного питания и их ресурс подходил к 0. Чаще такая возможность уже есть в оборудовании, но в моем случае этого не было. Я хранил имена компьютеров в текстовом файле так:
DNS1
DNS2
Затем открывал файл и выключал каждый компьютер:
$file = Get-Content -Path 'C:\Folder2\dd.txt'
$file = $file -split '`n'
$file | % {Stop-Computer}
...
Подписывайтесь на наш Telegram канал
Теги: #powershell