Как перезагрузить компьютер удаленно через Powershell
В Powershell есть возможность удаленного выполнения команд. Этот механизм я описывал в этой статье. Если вы никогда не исполняли командлеты типа Invoke-Command или New-PSSession я попробую вкратце объяснить.
Вообще для удаленной перезагрузки Powershell нужно выполнить следующий командлет:
$cred = Get-Credential Invoke-Command -ComputerName CL1 -Credential $cred -ScriptBlock
Где:
$cred — переменная, которая хранит учетные данные (логин/пароль). Она не обязательна, если вы администратор на удаленном компьютере
-ComputerName — имя компьютера, который будем перезагружать
-ScriptBlock — значит, что мы посылаем команду перезагрузки
Второй вариант такой:
Enter-PSSession -ComputerName CL1 -Credential $cred Restart-Computer
Отличия между командами в том, что в первом случае мы посылаем команду перезагрузки сразу, а во втором мы сначала подключаемся, а затем перезагружаем компьютер через Powershell. Отмечу, что во втором случае, если команда не выполнится то вы можете перезагрузить свой компьютер (выполняйте последовательно что бы предотвратить это).
В чем могут быть проблемы при удаленной перезагрузки компьютера
Если вы находитесь в домене, то удаленные команды Powershell должны выполнится при условии, что у вас запущен WinRM, а он запускается так:
Enable-PSRemoting
Вы так же должны быть с полномочиями администратора удаленного компьютера (по умолчанию WinRM работает так). Если вместо имени компьютера вы используете IP или вы не в домене, то вы используете не Kerberos, а NTLM и он по умолчанию выключен. Для этого вам нужно либо выпустить SSL сертификат, либо должны выполнить такую команду:
Set-Item wsman:\localhost\Client\TrustedHosts -value 192.168.3.134
Где вместо 192.168.3.134 должны вписать IP компьютера к которому хотите подключиться. Можно сделать и так:
Set-Item wsman:\localhost\Client\TrustedHosts -value *
Но в этом случае вы сможете подключаться ко всем компьютерам. Проблема в том, что NTLM не осуществляет проверку подлинности и из-за этого такой вариант не рекомендуется.
Если у вас все же не получается перезагрузить компьютер, попробуйте прочитать эту статью.
Restart-Computer
Перезапуск операционной системы на локальных и удаленных компьютерах.
Синтаксис
Restart-Computer [-WsmanAuthentication ] [[-ComputerName] ] [[-Credential]] [-Force] [-Wait] [-Timeout ] [-For ] [-Delay ] [-WhatIf] [-Confirm] []
Описание
Этот командлет доступен только на платформе Windows.
Командлет Restart-Computer перезапускает операционную систему на локальных и удаленных компьютерах.
Параметры Restart-Computer можно использовать для выполнения операций перезапуска, указания уровней проверки подлинности и альтернативных учетных данных, ограничения операций, выполняемых одновременно, и принудительного немедленного перезапуска.
Начиная с Windows PowerShell 3.0, вы можете ждать завершения перезагрузки перед выполнением следующей команды. Укажите интервал ожидания ожидания и интервал запроса и дождитесь доступности определенных служб на перезагруженном компьютере. Эта функция делает его практическим для использования Restart-Computer в скриптах и функциях.
Примеры
Пример 1. Перезапуск локального компьютера
Restart-Computer перезапускает локальный компьютер.
Restart-Computer
Пример 2. Перезапуск нескольких компьютеров
Restart-Computer может перезапустить удаленные и локальные компьютеры. Параметр ComputerName принимает массив имен компьютеров.
Restart-Computer -ComputerName Server01, Server02, localhost
Пример 3. Получение имен компьютеров из текстового файла
Restart-Computer получает список имен компьютеров из текстового файла и перезапускает компьютеры. Параметр ComputerName не указан. Но так как это первый параметр позиции, он принимает имена компьютеров из текстового файла, отправляемого по конвейеру.
Get-Content -Path C:\Domain01.txt | Restart-Computer
Get-Content использует параметр Path для получения списка имен компьютеров из текстового файла Domain01.txt . Имена компьютеров отправляются по конвейеру. Restart-Computer перезапускает каждый компьютер.
Пример 4. Принудительное перезапуска компьютеров, перечисленных в текстовом файле
В этом примере выполняется немедленный перезапуск компьютеров, перечисленных в Domain01.txt файле. Имена компьютеров из текстового файла хранятся в переменной. Параметр Force вызывает немедленный перезапуск.
$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 приводит к немедленному перезапуску каждого компьютера.
Пример 6. Перезагрузка удаленного компьютера и ожидание powerShell
Restart-Computer перезапускает удаленный компьютер, а затем ожидает до 5 минут (300 секунд) для того, чтобы PowerShell стал доступным на перезагрузленном компьютере, прежде чем он продолжит работу.
Restart-Computer -ComputerName Server01 -Wait -For PowerShell -Timeout 300 -Delay 2
Restart-Computer использует параметр ComputerName для указания Server01. Параметр wait ожидает завершения перезагрузки. Параметр For указывает, что PowerShell может выполнять команды на удаленном компьютере. Параметр Timeout задает пятиминутное ожидание. Параметр «Задержка » запрашивает удаленный компьютер каждые две секунды, чтобы определить, перезапускается ли он.
Пример 7. Перезапуск компьютера с помощью WsmanAuthentication
Restart-Computer перезапускает удаленный компьютер с помощью механизма WsmanAuthentication . Проверка подлинности Kerberos определяет, имеет ли текущий пользователь разрешение на перезапуск удаленного компьютера. Дополнительные сведения см. в разделе AuthenticationMechanism.
Restart-Computer -ComputerName Server01 -WsmanAuthentication Kerberos
Restart-Computer использует параметр ComputerName для указания удаленного компьютера Server01 . Параметр WsmanAuthentication указывает метод проверки подлинности как Kerberos.
Параметры
-ComputerName
Указывает одно имя компьютера или разделенный запятыми массив имен компьютеров. Restart-Computer принимает объекты ComputerName из конвейера или переменных.
Введите имя NetBIOS, IP-адрес или полное доменное имя удаленного компьютера. Чтобы указать локальный компьютер, введите имя компьютера, точку . или localhost.
Этот параметр не зависит от удаленного взаимодействия PowerShell. Параметр ComputerName можно использовать, даже если компьютер не настроен для выполнения удаленных команд.
Если параметр ComputerName не указан, Restart-Computer перезагрузит локальный компьютер.
Type: | String [ ] |
Aliases: | CN, __SERVER, Server, IPAddress |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Confirm
Запрашивает подтверждение перед выполнением Restart-Computer .
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Указывает учетную запись пользователя, которая имеет разрешение на выполнение этого действия. По умолчанию используется текущий пользователь.
Введите имя пользователя, например User01 или Domain01\User01, или введите объект PSCredential, созданный командлетом Get-Credential . Если ввести имя пользователя, вам будет предложено ввести пароль.
Учетные данные хранятся в объекте PSCredential , а пароль хранится как SecureString.
Дополнительные сведения о защите данных SecureString см. в разделе «Как безопасна Защита SecureString?».
Type: | PSCredential |
Position: | 1 |
Default value: | Current user |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Delay
Указывает частоту запросов в секундах. PowerShell запрашивает службу, указанную параметром For , чтобы определить, доступна ли служба после перезагрузки компьютера.
Этот параметр действителен только вместе с параметрами Wait и For .
Этот параметр впервые появился в Windows PowerShell 3.0.
Если параметр Delay не указан, Restart-Computer используется пять секунд задержки.
Type: | Int16 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-For
Указывает поведение PowerShell по мере ожидания доступности указанной службы или компонента после перезагрузки компьютера. Этот параметр действителен только с параметром Wait .
Ниже указаны допустимые значения этого параметра.
- По умолчанию: ожидает перезапуска PowerShell.
- PowerShell: может выполнять команды в удаленном сеансе PowerShell на компьютере.
- WMI: получает ответ на запрос Win32_ComputerSystem компьютера.
- WinRM: может установить удаленный сеанс на компьютере с помощью WS-Management.
Этот параметр впервые появился в Windows PowerShell 3.0.
Type: | WaitForServiceTypes |
Accepted values: | Wmi, WinRM, PowerShell |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Принудительно перезагрузит компьютер немедленно.
Type: | SwitchParameter |
Aliases: | f |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Timeout
Указывает время ожидания в секундах. Когда истекает время ожидания, вернется в командную строку, Restart-Computer даже если компьютеры не перезагрузились.
Параметр Timeout действителен только с параметром Wait . Время ожидания переопределяет неопределенный период ожидания параметра Wait .
Этот параметр впервые появился в Windows PowerShell 3.0.
Type: | Int32 |
Aliases: | TimeoutSec |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Wait
Restart-Computer подавляет запрос PowerShell и блокирует конвейер до перезапуска компьютеров. Этот параметр можно использовать в скрипте для перезагрузки компьютеров, а затем продолжить обработку после завершения перезагрузки.
Параметр wait ожидает неограниченное время перезапуска компьютеров. Время ожидания можно использовать для настройки времени и параметров for and Delay, чтобы ждать, пока определенные службы будут доступны на перезагруженных компьютерах.
Параметр Wait недействителен при перезапуске локального компьютера. Если значение параметра ComputerName содержит имена удаленных компьютеров и локального компьютера, Restart-Computer создается несрочная ошибка ожидания на локальном компьютере, но ожидает перезапуска удаленных компьютеров.
Этот параметр впервые появился в Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Показывает, что произойдет, если выполняется Restart-Computer . Командлет Restart-Computer не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WsmanAuthentication
Указывает механизм, используемый для проверки подлинности учетных данных пользователя. Этот параметр впервые появился в Windows PowerShell 3.0.
Допустимые значения для этого параметра: Basic, CredSSP, Default, Digest, Kerberos и Negotiate.
Дополнительные сведения см. в разделе AuthenticationMechanism.
Проверка подлинности поставщика служб безопасности учетных данных (CredSSP), в которой учетные данные пользователя передаются на удаленный компьютер для проверки подлинности, предназначена для команд, требующих проверки подлинности на нескольких ресурсах, таких как доступ к удаленному сетевому ресурсу. Этот механизм повышает риск безопасности удаленной операции. Если удаленный компьютер скомпрометирован, учетные данные, передаваемые ему, могут использоваться для управления сетевым сеансом.
Type: | String |
Accepted values: | Basic, CredSSP, Default, Digest, Kerberos, Negotiate |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
Можно передать строку, содержащую имя компьютера в этот командлет.
Выходные данные
None
Этот командлет не возвращает выходные данные.
Примечания
- В Windows Restart-Computer используется метод Win32Shutdown класса инструментария управления Windows (WMI) Win32_OperatingSystem . Для этого метода требуется включить привилегию SeShutdownPrivilege для учетной записи пользователя, используемой для перезапуска компьютера.
- В Linux и Mac OS Restart-Computer используется /sbin/shutdown средство bash.
Связанные ссылки
- Сведения о удаленном управлении Windows
- Get-Credential
- Протокол WS-Management
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
PowerShell is an open source project. Select a link to provide feedback:
Обратная связь
Отправить и просмотреть отзыв по
Выключение и перезагрузка Windows из командной строки
10.01.2023
itpro
PowerShell, Windows 10, Windows 11, Windows Server 2019, Windows Server 2022
комментариев 15
В Windows доступно несколько команд, которые позволяют выключить или перезагрузить локальный или удаленный компьютер. В этой статье мы рассмотрим, как использовать команду shutdown и PowerShell командлеты Restart-Computer и Stop-Computer для выключения/перезагрузки Windows.
Использование команды shutdown в Windows
Утилита командной строки shutdown является встроенной командой Windows, которая позволяет перезагрузить, выключить компьютер, перевести его в спящий режим или завершить сеанс пользователя. В этой инструкции мы покажем основные примеры использования команды shutdown в Windows (все рассмотренные команды запускаются в окне Выполнить — Win+R ->, в командной строке cmd.exe или в консоли PowerShell).
Команда shutdown имеет следующий синтаксис:
shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f] [/m \\компьютер][/t xxx][/d [p|u]xx:yy [/c «комментарий»]]
Как вы видите, у команды довольно много опций, а также есть возможность выключить/ перезагрузить удаленный компьютере.
Выключение Windows командой Shutdown
Для выключения ОС Windows и компьютера необходимо использовать команду shutdown с ключом /s.
Перезагрузка Windows
Чтобы перезагрузить компьютер, необходимо добавить параметр /r. После выполнения этой команды Windows корректно перезагрузится.
Завершение сеанса пользователя
Чтобы завершить текущую сессию пользователя (logout), нужно выполнить команду:
Эта команда аналогично выполнению команды logoff.
Перевод компьютера в режим гибернации
Для перевода компьютер в режим гибернации (в этом режиме все содержимое памяти записывается в файл hyberfil.sys на диск и компьютер переходит в спящий режим с пониженным электропотреблением), выполните команду:
Перезагрузка компьютера с сообщением пользователям
Вы можете предупредить всех пользователей Windows о предстоящем выключении / перезагрузки компьютера или сервера, отправив сообщение во все активные сессии (как правило эта возможность используется на терминальных RDS серверах, за которыми одновременно работают несколько пользователей, каждый в своей собственной RDP сессии).
shutdown /r /c “Этот сервер будет перезагружен через 60 секунд.”
Отложенное выключение / перезагрузка компьютера
Можно выключить или перезагрузить компьютер с определенной задержкой (по таймеру). С помощью опции /t можно указать интервал времени (в секундах), через который ПК/сервер будет перезагружен или выключен. Тем самым вы можете предоставить пользователям дополнительное время для того, чтобы успеть сохранить открытые файлы и корректно закрыть приложения. Эту опцию удобно использовать совместно с отправкой сообщения. В этом примере мы указываем, что Windows будет выключена через 10 минут (600 секунд) и информируем пользователей сообщением.
shutdown /s /t 600 /c «Сервер будет выключен через 10 минут. Сохраните свои документы!»
Пользователю будет выдано предупреждение о запланированном выключении: Ваш сеанс будет завершен.
Такую команду удобно использовать для оповещения пользователей с сеансами на RDSH хостах в ферме Remote Desktop Services на Windows Server, когда вы хотите перезагрузить сервер для выполнения обслуживания. Можно использовать совместно с режимом обслуживания RDS (Drain Mode).
Если задержка очень длительная, например, 100 минут (6000 секунд), то вместо предупреждающего окна появляется всплывающее сообщение в нижнем правом углу экрана: «Ваш сеанс будет завершен. Работа Windows будет завершена через 100 мин».
Отмена выключения / перезагрузки компьютера
После запуска команды выключения или перезагрузки Windows, по умолчанию утилита shutdown ожидает 60 секунд, не выполняя никаких действия. Администратор может отменить перезагрузку или выключение устройства, если в течении этого времени успеет выполнить команду:
После отмены выключения появится всплывающее сообщение в нижнем правом углу экрана: «Выход из системы отменен. Запланировано завершение работы отменено».
Перезагрузить Windows немедленно
Чтобы выключить или перезагрузить компьютер немедленно, не ожидая стандартные 60 секунд, нужно указать значение 0 для параметра /t. Например, для немедленной перезагрузки компьютера:
Очень важный ключ /f. Я использую его практически всегда при выключении или перезагрузки серверов Windows. Данный атрибут обеспечивает принудительное завершение всех запущенных программ и процессов, не ожидая подтверждения от пользователя (не будем же мы ждать подтверждения закрытия программ от всех пользователей на терминальном сервере, его можно просто не дождаться).
Следующая команда выполнит перезагрузку компьютера с автоматическим запуском всех зарегистрированных приложений после перезагрузки (имеются в виду приложения, зарегистрированные в системе с использованием функции API RegisterApplicationRestart).
Ярлык для перезагрузки компьютера
Для удобства пользователей вы можете создать на рабочем столе ярлыки для выключения или перезагрузки компьютера с нужными настройками. Такой ярлык может быть полезен для выполнения перезагрузки из RDP сессии, когда отсутствуют кнопки перезагрузки/завершения работы компьютера в меню Пуск.
Можно распространить такой ярлык на компьютеры пользователей через GPO.
Перезагрузка Windows в определенное время
Чтобы всегда перезагружать/выключать компьютер или сервер в определенное время, вы можете добавить команду shutdown в планировщик заданий Windows taskschd.msc.
Например, следующее задание планировщика будет ежедневно перезагружать компьютер ночью в 0:00.
$Trigger= New-ScheduledTaskTrigger -At 00:00am -Daily
$User= «NT AUTHORITY\SYSTEM»
$Action= New-ScheduledTaskAction -Execute «shutdown.exe» -Argument «–f –r –t 120»
Register-ScheduledTask -TaskName «RebootEvertyNight_PS» -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
Задание планировщика также можно распространить на компьютеры с помощью групповых политик.
Перезагрузка удаленных компьютеров командой shutdown
Вы можете перезагрузить удаленный компьютер по сети, для этого у вас должен быть к нему сетевой доступ, а учетная запись, из-под которой запускается команда shutdown должна входить в группу локальных администраторов на удаленном компьютере (сервере):
shutdown /r /t 120 /m \\192.168.1.100
Если все указанные условия выполняются, но при выполнении команды shutdown появляется ошибка ”Отказано в доступе (5)”, на удаленном компьютере нужно разрешить удаленный доступ к административным ресурсам (C$, ADMIN$), изменив значение параметра LocalAccountTokenFilterPolicy на 1.
reg add «HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System» /v «LocalAccountTokenFilterPolicy» /t REG_DWORD /d 1 /f
На удаленном компьютере должны быть включены правила Windows Defender Firewall, разрешающие удаленный доступ черезWMI и SMB.
Get-NetFirewallrule -name WMI-RPCSS-In-TCP,WMI-WINMGMT-In-TCP,FPS-SMB-In-TCP| Enable-NetFirewallRule
Если для подключения к удаленному компьютеру нужно указать учетные данные пользователя, можно использовать команду:
net use \\192.168.31.10 /u:corp\username
shutdown /s /t 60 /f /m \\192.168.31.10
Если вам необходимо удаленно перезагрузить множество компьютеров, их список можно сохранить в текстовый файл и запустить удаленную перезагрузку всех компьютеров с помощью такого PowerShell скрипта:
$sh_msg = «Ваш компьютер будет автоматически перезагружен через 10 минут. Сохраните свои файлы и закройте запущенные программы»
$sh_delay = 600 # секунд
$computers = gc C:\PS\PC-list.txt
foreach ($comp in $computers)
& ‘C:\Windows\System32\SHUTDOWN.exe’ «-m \\$comp -r -c $sh_msg -t $sh_delay»
>
Графический интерфейс команды shutdown
Для тех, кому не комфортно работать в командной строке, есть графический интерфейс для команды shutdown, чтобы его вызвать, наберите:
Как вы видите, в диалоге удаленного завершения работы вы можете добавить несколько компьютеров, которые нужно перезагрузить/выключить, указать текст уведомления и задать причину выключения для сохранения в журнале Windows.
Перезагрузка и выключение Windows с помощью PowerShell
В PowerShell есть две команды для выключения и перезагрузки компьютера: Restart-Computer и Stop-Computer. Обе команды позволяют выключить или перезагрузить локальный или удаленный компьютер по сети.
Для перезагрузки Windows выполните:
Чтобы выключить компьютер:
По умолчанию перезагрузка начнется через 5 секунд. Можно увеличить задержку перед перезагрузкой:
Restart-Computer –delay 15
У обоих командлетов есть параметр –ComputerName , который позволяет задать список удаленных компьютеров.
Например, чтобы удаленно выключить два сервера Windows:
Stop-Computer -ComputerName «Server01», «Server02»
Можно указать учетные данные администратора для подключения к удаленному хосту:
$Creds = Get-Credential
Restart-Computer -ComputerName $Names -Credential $Creds
Для подключения к удаленным компьютерам используется WMI и DCOM (он должны быть включен и настроен). Если WMI не настроен, при запуске команды появится ошибка:
Restart-Computer : Failed to restart the computer wks-t1122h2 with the following error message: Access is denied. Exception from HRESULT: 0x80070005 (E_ACCESSDENIED).
Если на удаленном компьютере настроен WinRM (Windows Remote Management), вы можете использовать для подключения WSman вместо WMI:
Restart-Computer -ComputerName wks-t1122h2 -Protocol WSMan
Если на удаленном компьютер есть активные сессии пользователей, при запуске Restart-Computer появится ошибка:
Restart-Computer : Failed to restart the computer wks-t1122h2 with the following error message: The system shutdown cannot be initiated because there are other users logged on to the computer.
Вы можете узнать имя пользователя с активной сессией на удаленном компьютере с помощью команды:
Для принудительной перезагрузки нужно добавить параметр -Force:
Restart-Computer -ComputerName wks-t1122h2 –Force
В журнале событий Windows с EventID 1074 (Event Viewer -> Windows Logs -> System) будет содержаться имя пользователя, который выключил/перезагрузил Windows.
С помощью параметра -For можно перезагрузить компьютер и дождаться, когда он будет доступен. Например, вы хотите убедиться, что удаленный компьютер успешно перезагрузится и на нем стартовала служба WinRM, позволяющая подключиться к нему через WS-Management:
Restart-Computer -ComputerName wks-t1122h2 -Wait -For WinRM
Restarting computer wks-t1122h2 Verifying that the computer has been restarted.
Можно дождаться запуска службы удаленного рабочего стола (RDP) или любой другой службы Windows:
Restart-Computer -ComputerName wks-t1122h2 -Wait -For TermService
Если нужно одновременно перезагрузить несколько хостов, можно использовать возможности параллельного запуска команд в версии PowerShell 7.x.
Например, вы можете получим список Windows Server в определенном контейнере (Organizational Unit) Active Directory с помощью командлета Get-ADComputer и перезагрузить их одновременно:
$Computers = (Get-ADComputer -Filter ‘operatingsystem -like «*Windows server*» -and enabled -eq «true»‘ -SearchBase «OU=Servers,DC=winitpro,DC=loc»).Name
$Computers | ForEach-Object -Parallel < Restart-Computer -ComputerName $_ -Force>-ThrottleLimit 3
Предыдущая статья Следующая статья
PowerShell: системное администрирование и программирование
Всё о PowerShell в Windows и на Linux. Системное администрирование Windows
Как в PowerShell выключить компьютер
Командлет Stop-Computer
Командлет Stop-Computer выключает локальный или удалённый компьютер.
Вы можете запускать Stop-Computer с дополнительными опциями, чтобы указать уровни аутентификации и альтернативные учётные данные, а также для принудительного немедленного завершения работы.
Этот командлет использует метод Win32Shutdown класса Win32_OperatingSystem WMI.
Следующие две команды являются идентичными и выключают локальный компьютер:
Stop-Computer Stop-Computer -ComputerName localhost
Следующий пример выключит компьютер с именем Win-Server-Core, имеющим пользователя Administrator с правами, достаточными для выключения компьютера:
Stop-Computer -ComputerName Win-Server-Core -Credential Administrator
Эта команда выключает удалённые компьютеры и локальный компьютер.
Stop-Computer -ComputerName "Server01", "Server02", "localhost"
В предыдущей команде Stop-Computer использует опцию -ComputerName для указания двух удалённых компьютеров и локального компьютера. Каждый из перечисленных компьютеров будет выключен.
Следующий код выключает удалённые компьютеры в качестве фонового задания:
$j = Stop-Computer -ComputerName "Server01", "Server02" & $results = $j | Receive-Job $results
В предыдущем примере Stop-Computer использует опцию -ComputerName для указания двух удалённых компьютеров. Фоновый оператор «&» переводит команду как фоновое задание. Объекты задания хранятся в переменной «$j».
Объекты задания в переменной $j отправляются по конвейеру в Receive-Job, который получает результаты задания. Объекты хранятся в переменной $results. Переменная $results отображает информацию о задании в консоли PowerShell.
Выключение удалённого компьютера:
Stop-Computer -ComputerName "Server01" -WsmanAuthentication Kerberos
В предыдущем примере Stop-Computer использует опцию -ComputerName для указания удалённого компьютера. Опция -WsmanAuthentication указывает использование Kerberos для установки удалённого подключения.
Выключение компьютера в домене:
$s = Get-Content -Path ./Domain01.txt $c = Get-Credential -Credential Domain01\Admin01 Stop-Computer -ComputerName $s -Force -Credential $c
В предыдущем примере Get-Content использует опцию -Path для чтобы прочитать содержимое файла Domain01.txt в текущем каталоге со списком компьютеров домена. Объекты хранятся в переменной $s.
Затем Get-Credential использует опцию -Credential для указания учётных данных администратора домена. Учётные данные хранятся в переменной $c.
Наконец Stop-Computer выключает компьютеры, указанные в списке компьютеров в опции -ComputerName в переменной $s. Опция -Force вызывает немедленное отключение. Опция -Credential передаёт свои учётные данные, сохранённые в переменной $c.
Ошибка «Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями»
Stop-Computer -ComputerName Win-Server-Core -Credential Administrator
может завершиться ошибкой:
Stop-Computer: Failed to stop the computer Win-Server-Core with the following error message: Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями..
Её причина в том, что пользователи выполнили вход на компьютере и используют его.
Для принудительного выключения укажите опцию -Force:
Stop-Computer -ComputerName Win-Server-Core -Credential Administrator -Force
Выключение компьютера без PowerShell
Без PowerShell вы можете выключить компьютер следующей командой:
shutdown /s
Вам будет показано предупреждение и компьютер будет выключен по истечении 30 секунд.
Чтобы немедленно выключить компьютер выполните команду:
shutdown /s /t 0
Вы можете добавить в команду опцию /f, которая означает принудительное закрытие запущенных приложений без предупреждения пользователей. Подразумевается использование параметра /f, если для параметра /t задано значение больше 0.