Как в PowerShell перезагрузить компьютер
Командлет Restart-Computer
Командлет Restart-Computer перезапускает операционную систему на локальном или удалённом компьютерах.
Следующая команда перезагрузит локальный компьютер:
Restart-Computer
Вы можете использовать Restart-Computer с различными параметрами для запуска операций перезапуска, для указания уровней аутентификации и альтернативных учётных данных, для ограничения операций, выполняемых одновременно, и для немедленного перезапуска.
Начиная с Windows PowerShell 3.0, вы можете дождаться завершения перезагрузки, прежде чем запускать следующую команду. Укажите время ожидания и интервал запроса и дождитесь, пока определённые службы будут доступны на перезагруженном компьютере. Эта функция делает практичным использование Restart-Computer в скриптах и функциях.
Restart-Computer работает только на компьютерах под управлением Windows и требует WinRM и WMI для завершения работы системы, включая локальную.
Пример перезагрузки нескольких компьютеров:
Restart-Computer -ComputerName Server01, Server02, localhost
Опция -ComputerName <String[]> задаёт одно имя компьютера или массив имён компьютеров, разделённых запятыми. Restart-Computer принимает объекты ComputerName из конвейера или переменных.
Введите имя NetBIOS, IP-адрес или полное доменное имя удалённого компьютера. Чтобы указать локальный компьютер, введите имя компьютера, точку «.» или localhost.
Этот параметр не зависит от удалённого взаимодействия PowerShell. Вы можете использовать параметр -ComputerName, даже если ваш компьютер не настроен для выполнения удалённых команд.
Если параметр -ComputerName не указан, Restart-Computer перезагружает локальный компьютер.
Если вы перезагружаете удалённый компьютер, то вам скорее всего понадобится опция -Credential <PSCredential>, которая задаёт учётную запись пользователя, у которой есть разрешение на выполнение этого действия. По умолчанию это текущий пользователь.
Введите имя пользователя, например User01 или Domain01\User01, или введите объект PSCredential, созданный командлетом Get-Credential. Если вы введёте имя пользователя, вам будет предложено ввести пароль.
Учётные данные хранятся в объекте PSCredential (/dotnet/api/system.management.automation.pscredential), а пароль хранится как SecureString (/dotnet/api/system.security.securestring).
В следующем примере перезагружаются компьютеры, чьи имена получены из текстового файла:
Get-Content -Path C:\Domain01.txt | Restart-Computer
Get-Content использует параметр -Path для получения списка имён компьютеров из текстового файла Domain01.txt. Имена компьютеров отправляются по конвейеру. Restart-Computer перезагружает каждый компьютер.
Принудительный перезапуск компьютеров, перечисленных в текстовом файле:
$Names = Get-Content -Path C:\Domain01.txt $Creds = Get-Credential Restart-Computer -ComputerName $Names -Credential $Creds -Force
Get-Content использует параметр -Path для получения списка имён компьютеров из текстового файла Domain01.txt. Имена компьютеров хранятся в переменной $Names. Get-Credential запрашивает у вас имя пользователя и пароль и сохраняет значения в переменной $Creds. Restart-Computer использует параметры -ComputerName и -Credential с их переменными. Параметр -Force вызывает немедленную перезагрузку каждого компьютера.
Перезагрузка удалённого компьютера и ожидание его включения для выполнения PowerShell:
Restart-Computer -ComputerName Server01 -Wait -For PowerShell -Timeout 300 -Delay 2
Restart-Computer использует параметр -ComputerName для перезагрузки Server01. Параметр -Wait делает так, что команда ожидает завершения перезапуска. -For устанавливает, что PowerShell может запускать команды на удалённом компьютере. Параметр -Timeout устанавливает пятиминутной ожидание. Параметр -Delay каждые две секунды опрашивает удалённый компьютер, чтобы определить, перезагружен ли он.
Перезагрузка компьютера с помощью WsmanAuthentication:
Restart-Computer -ComputerName Server01 -WsmanAuthentication Kerberos
Restart-Computer использует параметр -ComputerName для перезагрузки удалённого компьютера Server01. Параметр -WsmanAuthentication указывает метод проверки подлинности Kerberos.
Ошибка «Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями»
При перезагрузки удалённого компьютера, например:
Restart-Computer -ComputerName Win-Server-Core -Credential Administrator
может возникнуть ошибка
Restart-Computer: Failed to restart the computer Win-Server-Core with the following error message: Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями..
Эта ошибка возникает если какой-либо пользователь выполнил вход на удалённом компьютере, для принудительной перезагрузки используйте опцию -Force:
Restart-Computer -ComputerName Win-Server-Core -Credential Administrator -Force
Перезагрузка компьютера без PowerShell
Без PowerShell вы можете перезагрузить компьютер следующей командой:
shutdown /r
Вам будет показано предупреждение и компьютер будет перезагружен по истечении 30 секунд.
Чтобы немедленно перезагрузить компьютер выполните команду:
shutdown /r /t 0
Вы можете добавить в команду опцию /f, которая означает принудительное закрытие запущенных приложений без предупреждения пользователей. Подразумевается использование параметра /f, если для параметра /t задано значение больше 0.