Выключение или перезагрузка компьютера из bat файла
Статья описывает, как выключить или перезагрузить компьютер на Windows из командной строки: PowerShell, JScript/VBScript с WSH, nhss, shutdown. А также дополнительно, как сделать выключение или перезагрузку с задержкой.
Выключить компьютер можно командной Stop-Computer из консоли PowerShell:
Перезагрузить компьютер можно командой Restart-Computer из консоли PowerShell:
Как это выглядит в консоли PowerShell:
Поскольку PowerShell сейчас устанавливается на Windows по умолчанию, то использование PS команды не требует дополнительных установок.
Чтобы выполнить выключение или перезагрузку через PowerShell из bat файла или из командной строки, их надо вызывать через powershell.
Например, команда перезагрузки локального компьютера в bat файле или командной строке:
Аналогично, команда выключения локального компьютера в bat файле или командной строке:
Работа с удаленными сессиями Powershell
Не так давно пришлось потратить немного времени на настройку удаленного доступа через Powershell. Мне такой подход кажется очень хорошей альтернативной Remote Desktop Services в ряде случаев (перезапустить сервис на удаленном хостинге VDS, сделать резервные копии, посмотреть состояние системы и т.д.).
Возможность создания удаленных сеансов Powershell появилась в версии 2. Для этого используется командлет Enter-PSSession / Invoke-Command . Однако, перед их использованием следует подготовить среду.
Что делаем на сервере:
Шаг 1: Открываем консоль Powershell и разрешаем удаленные сессии командлетом Enable-PSRemoting с ключом Force .
Шаг 2: Убеждаемся в том, что служба WinRM запущена.
Шаг 3: Настраиваем правила в брэндмауэре, чтобы входящие подключения были возможны.
На компьютере, который будет использоваться как клиентский тоже необходимо выполнить несколько действий:
Шаг 1: Разрешить подключение к удаленным узлам. Для доступа к любым узлам можно воспользоваться следующей конструкцией:
Шаг 2: Убедиться, что брэндмауэр не блокирует исходящие соединения.
Теперь для подключения к удаленному узлу через Powershell можно осуществлять так:
Значения 192.168.1.160 и VMNAMEUser необходимо заменить адресом удаленного узла и именем пользователя Windows на сервере.
Теперь удаленный доступ через Powershell работает. Однако, есть еще один ньюанс. Возможно, кто-либо из вас пользуется профилями в Powershell. Профили – это специальные скрипты, которые запускаются при запуске самой консоли. Здесь, например, можно определить все необходимые алиасы и выполнить предварительные действия.
Проблема заключается в том, что профили не запускаются при использовании удаленных сеансов. Решить это можно путем использования разных конфигураций подключения. Для этого первоначально необходимо зарегистрировать конфигурацию на удаленном сервере. Сделать это можно путем выполнения коммандлета Register-PSSessionConfiguration . При этом каждой конфигурации присваивается имя. Для каждой конфигурации можно задать путь до скрипта, который будет выполняться при старте сессии.
После этого, при подключении к удаленному узлу, при использовании коммандлета Enter-PSSession следует указать имя конфигурации.
Теперь можно не тратить ресурсы сервера на создание сессии подключения через Remote Desktop Services и удаленно управлять сервером, используя Powershell.
О проекте RemontCompa.ru
RemontCompa — сайт с огромнейшей базой материалов по работе с компьютером и операционной системой Windows. Наш проект создан в 2010 году, мы стояли у истоков современной истории Windows. У нас на сайте вы найдёте материалы по работе с Windows начиная с XP. Мы держим руку на пульсе событий в эволюции Windows, рассказываем о всех важных моментах в жизни операционной системы. Мы стабильно выпускаем мануалы по работе с Windows, делимся советами и секретами. Также у нас содержится множество материалов по аппаратной части работы с компьютером. И мы регулярно публикуем материалы о комплектации ПК, чтобы каждый смог сам собрать свой идеальный компьютер.
Наш сайт – прекрасная находка для тех, кто хочет основательно разобраться в компьютере и Windows, повысить свой уровень пользователя до опытного или профи.
Получите метку времени последней перезагрузки Windows?
У меня есть компьютер на удаленном компьютере, подключенный по сети, но он иногда дает сбой или перезагружается удаленными пользователями. После перезапуска некоторые службы и приложения должны быть в рабочем состоянии. Поэтому я бы хотел узнать о перезагрузке как можно скорее. Я думаю, что PS может быть хорошим выбором с некоторыми сценариями, чтобы я мог сделать удаленный вызов для получения информации о отметке времени последней перезагрузки.
Есть ли способ получить метку времени удаленной перезагрузки Windows XP с помощью PowerShell 2.0 (функция удаленного взаимодействия)?
Как перезапустить службу на удаленном компьютере в Windows? [закрыто]
Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow.
Закрыт 7 лет назад .
Иногда во время отладки мне нужно перезапустить службу на удаленном компьютере. В настоящее время я делаю это через удаленный рабочий стол. Как это можно сделать из командной строки на моем локальном компьютере?
Ни один из этих ответов не объясняет, как выполнить удаленный запуск при обработке разрешений пользователя, необходимых для выполнения вызова службы.
Вы можете использовать консоль служб, щелкнув слева и выбрав опцию «Подключиться к другому компьютеру» в меню «Действие».
Если вы хотите использовать только командную строку, вы можете использовать
Отлично работает с cmd.exe. Не работает в PowerShell, вероятно, из-за ошибки \, следует: Set-Content: не удается найти параметр, который соответствует имени параметра ‘[имя службы]’. Единственный незначительный недостаток в том, что он возвращает вас в командную строку до завершения операции.
поскольку команда sc работает асинхронно, если вам нужно выполнить сценарий перезапуска службы, взгляните на пакетные сценарии, которые я разместил здесь: stackoverflow.com/questions/1405372/…
На Powershell вам нужно использовать sc.exe \machine stop
Какой минимальный набор разрешений требуется пользователю для запуска конкретной удаленной службы на удаленном компьютере?
+1 это работает без проблем в PowerShell, в отличие от таких вещей, как Invoke-Command \ remote_machine
Вы можете использовать mmc:
- Пуск / Выполнить. Наберите «mmc».
- Файл / Добавить / Удалить оснастку . Нажмите «Добавить . «
- Найдите «Услуги» и нажмите «Добавить».
- Выберите «Другой компьютер:» и введите имя хоста / IP-адрес удаленного компьютера. Нажмите Finish, Close и т. Д.
После этого вы сможете управлять службами, как если бы они находились на вашем локальном компьютере.
Это золото. Я всегда обращался к серверам удаленно для обработки услуг. Теперь у меня может быть список разных серверов в одной консоли.
Вы можете использовать команду System Internals PSEXEC для удаленного выполнения net stop yourservice , а затем net start yourservice
Используя командную строку, вы можете сделать это:
Чтобы было понятно, команда «AT» использует планировщик Windows для планирования команды. это излишне для написания сценариев ряда удаленных команд и не гарантирует порядок выполнения или завершение команды до следующей команды. Команда SC для этого намного лучше. Взгляните на пакетные сценарии, которые я опубликовал в этом вопросе: stackoverflow.com/questions/1405372/…
Предлагаю вам взглянуть на RSHD
За клиентом возиться не нужно, в Windows он есть по умолчанию.
Что ж, если у вас есть Visual Studio (я знаю, что это в 2005 году, хотя не уверен в более ранних версиях), вы можете добавить удаленный компьютер в свой тег «Server Explorer». На этом этапе у вас будет доступ к СЛУЖБАМ, которые запущены или могут быть запущены с этой машины (а также журналам событий, очередям и парочке других интересных вещей).
Как ни странно, это работает в VS2005, но НЕ в VS2008. Вы по-прежнему можете ПРОСМОТРЕТЬ службы, но больше не можете запускать или останавливать их напрямую. Вместо этого вы можете щелкнуть правой кнопкой мыши узел Services и запустить Service Manager для этого хоста.
Один из способов — включить telnet-сервер на машине, на которой вы хотите управлять службами (добавить / удалить компоненты Windows).
Откройте приглашение DOS
Введите telnet yourmachineip / name
Войдите в систему,
введите net start и serviceName * например, w3svc
Это запустит IIS, или вы можете использовать net stop, чтобы остановить службу.
В зависимости от вашей настройки вам нужно рассмотреть способ защиты telnet-соединения, поскольку я считаю его незашифрованным.
Здесь несколько хороших решений. Если вы все еще используете Windows 2000 и не можете ничего установить на удаленный компьютер, это тоже работает:
Откройте Консоль управления компьютером (щелкните правой кнопкой мыши «Мой компьютер», выберите «Управление»; откройте из «Администрирование» в меню «Пуск»; или откройте из MMC с помощью оснастки).
Щелкните правой кнопкой мыши имя своего компьютера и выберите «Подключиться к удаленному компьютеру».
Введите имя компьютера и учетные данные, и у вас будет полный доступ ко многим функциям администратора, включая панель управления службами.
Метод 3: отключить и снова включить Windows Powershell
В некоторых случаях вы можете попытаться отключить и снова включить Windows PowerShell, чтобы исправить ошибку Powershell, которая перестала работать. Вот учебник:
Шаг 1. Откройте Панель управления я выбирать Программы .
Шаг 2: нажмите Удалить программу а затем щелкните Включение и отключение функций Windows на левой панели.
Шаг 3. Найдите Windows PowerShell и снимите флажок, затем нажмите Хорошо чтобы сохранить изменения.
Шаг 4. Перезагрузите компьютер, затем повторите описанные выше шаги и повторно включите функцию Windows PowerShell.
Примечание. Иногда функция Windows PowerShell была отключена, поэтому, если она отключена, вы можете выполнить шаги, чтобы включить функцию Windows PowerShell для исправления ошибки Powershell, которая перестала работать.
Как легко записать командный сеанс Powershell в Windows 10?
Вы можете сохранить все выполняемые команды и вывод в текстовый файл в Powershell. Вот как записать командный сеанс Powershell в Windows 10.