admin / 15.09.2018

Перезагрузка сервера удаленная

Когда сисадмин начинает работать с удаленным администрированием зачастую встают вопросы:

Как перезагрузить компьютер/сервер через командную строку на удаленном рабочем столе?

Как выключить (завершить работу) компьютера/сервера через командную строку на удаленном рабочем столе?

Вот список команд для перезагрузки/выключения компьютера/сервера через командную строку с кратким пояснением для комфортной работы:

Перезагрузка через командную строку:

shutdown -r -t 0

-r  означает reboot (перезагрузка)

-t указывает через какой промежуток времени

0 соответственно промежуток времени в секундах

Завершение работы (выключение) через командную строку:

shutdown -s -t 0

Справка из командной строки по параметру shutdown /?

Использование: shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e] [/f]

    [/m \\компьютер][/t xxx][/d [p|u]xx:yy [/c "комментарий"]]

 

    Без пар.   Отображение справки. То же, что и с параметром /?.

    /?         Отображение справки. То же, что и без параметров.

    /i         Отображение графического интерфейса пользователя.

               Этот параметр должен быть первым.

    /l         Завершение сеанса. Этот параметр нельзя использовать с

               параметрами /m или /d.

    /s         Завершение работы компьютера.

    /r         Завершение работы и перезагрузка компьютера.

    /g         Завершение работы и перезагрузка компьютера. После перезапуска

               системы, запуск всех зарегистрированных приложений.

    /a         Отмена завершения работы системы.

               Этот параметр можно использовать только в период ожидания.

    /p         Немедленное отключение локального компьютера без предупреждения.

               Можно использовать с параметрами /d и /f.

    /h         Переключение локального компьютера в режим гибернации.

               Можно использовать с параметром /f.

    /e         Указание причины непредвиденного завершения работы компьютера.

    /m \\компьютер Указание конечного компьютера.

    /t xxx     Задание задержки в xxx секунд перед завершением работы

               компьютера.

               Допустимый диапазон: 0-315360000 (10 лет); значение по умолчанию:

 30.

               Если период таймаута больше 0, применяется

               параметр /f.

    /c "комментарий" Комментарий с причиной перезапуска или завершения работы.

               Наибольшая длина — 512 знаков.

    /f         Принудительное закрытие запущенных приложений без предупреждения

пользователей.

               Параметр /f используется, если для параметра /t

               задано значение больше 0.

    /d [p|u:]xx:yy  Необходимо указать причину для перезагрузки или выключения.

               "p" означает запланированную перезагрузку или завершение работы.

               "u" означает, что причина определяется пользователем.

               Если не задано ни "p", ни "u", перезагрузка или завершение работы

 

               являются незапланированными.

               xx является основным номером причины (целое положительное число,

меньшее 256).

               yy является вспомогательным номером причины (целое положительное

число, меньшее 65536).

 

Для просмотра логов Windows можно использовать команды Get-WinEvent и Get-EventLog

Get-EventLog получает список журналов или событий в заданном журнале на локальном или удалённом компьютере. Указывая нужные параметры для Get-EventLog, можно с лёгкостью искать искомые события по значениям их свойств. Get-EventLog возвращает события, соответствующие всем указанным значениям свойств. Командлет Get-EventLog работает только со стандартными классическими журналами событий Windows.

Удаленная Перезагрузка Сервера

Если нужно искать по остальным событиям из журналов Windows, используйте командлет Get-WinEvent.

Представим, что вам нужна основная информация о журналах событий на вашем компьютере. В этом случае убедитесь, что вы включили параметр list при вызове Get-EventLog:

Get-EventLog -list

Если вам нужна только информация о конкретном журнале событий, используйте командлет Where-Object, чтобы ограничить извлечение данных конкретным журналом событий:

Get-EventLog -list | Where-Object {$_.logdisplayname -eq "Application"}

Эта команда извлекает все события в журнале событий системы:

Get-EventLog system

После выполнения команды выше на экран будет выведено слишком много данных. Используйте параметр -Newest и верните только нужное количество последних событий, записанных в журнале. Например, эта команда извлекает последние 10 событий, записанные в журнал событий системы:

Get-EventLog System -newest 10

Вот данные, которые вы получите:

Чтобы получить более подробную информацию, просто добавьте командлет Format-List:

Get-EventLog System -newest 10 | Format-List

Полученная информация будет уже такой:

Вы также можете передавать данные через командлет Where-Object для возврата подмножества событий. Например, эта команда извлекает только те события в журнале событий Windows PowerShell, у которых значение EventID равно 403:

Get-EventLog "Windows PowerShell" | Where-Object {$_.EventID -eq 403}

Вот небольшая команда, которая извлекает все события в журнале событий Windows PowerShell, а затем использует командлет Group-Object для группировки этих событий с помощью EventID. Другими словами, команда подсчитывает общее количество событий для каждого идентификатора (например, произошло два события с EventID 300, произошло шесть событий с событием EventID 400 и т. Д.). Затем эти данные передаются через командлет Sort-Object для предоставления результатов, отсортированных по EventID. Вот команда:

Get-EventLog "Windows PowerShell" | Group-Object eventid | Sort-Object Name

Примеры использования Get-Eventlog:

Поиск событий по ID после 3 июля:

Get-EventLog -ComputerName compname -After 03/07/2017 -LogName System | Where-Object {$_.EventID -eq "6005"}

Поиск в логах нескольких серверов:

$servers = "compname1", "compname2", "compname3" ForEach ($Server in $servers) {$Server; Get-EventLog -LogName System -Computername $Server | Where-Object {$_.EventID -eq "6005"}}

Возвращает все события журнала Windows PowerShell, в сообщениях которых содержится слово «failed»:

Get-Eventlog -logname "Windows PowerShell" -message "*failed*"

Поиск событий, статус которых «Ошибка»:

Get-Eventlog -logname System -EntryType Error

 

Командлет Get-WinEvent берёт данные из журналов событий, а именно — стандартные журналы событий, события приложений и системы. Если вызвать команду Get-WinEvent без параметров, то будут показаны все события из журналов событий компьютера. Для прерывания выполнения команды нажмите сочетание клавиш CTRL+C. Стоит отметить то, что Get-WinEvent работает только в Windows Vista, Windows Server 2008 R2 и старше. Также потребуется установленная платформа Microsoft .NET Framework 3.5 или новее.

Примеры использования Get-Winevent:

Поиск в логе System по ID 6005:

Get-WinEvent -ComputerName compname -LogName system | where {$_.id -eq "6005"}

Поиск событий за последние 40 дней:

$yesterday = (get-date) — (new-timespan -day 40) Get-WinEvent -FilterHashTable @{LogName=’system’;StartTime=$yesterday; id=’6005′}

Поиск событий за последние 5 дней для Outlook:

$starttime = (get-date).adddays(-5) Get-WinEvent -ComputerName compname -FilterHashtable @{logname="application"; ProviderName="outlook"; StartTime= $starttime}

Поиск в логах нескольких серверов:

$servers = "compname1", "compname2", "compname3" ForEach ($Server in $Servers) {$Server; Get-WinEvent -LogName System -MaxEvents "2" -Computername $Server}

Запись опубликована автором MishLen в рубрике Windows с метками log. Добавьте в закладки постоянную ссылку.

как удаленно перезагрузить или заблокировать компьютер в домене?

Я
   Нуф-Нуф

 

20.05.10 — 06:00

Есть домен. есть компьютер подключенный к домену. Мне нужно его перезагрузить (учетную запись пользователя уже отключу) или заблокировать.

 
 

   smaharbA

 

1 — 20.05.10 — 06:02

shutdown /m \\comp /r /f /t 1

???

   ДенисЧ

 

2 — 20.05.10 — 06:02

H:\Documents and Settings\Admin>shutdown /?
Использование: shutdown [-i | -l | -s | -r | -a] [-f] [-m \\<компьютер>]
               [-t xx] [-c «комментарий»] [-d up:xx:yy]

       Без аргументов          Вывод справки по использованию (как и -?)
       -i                      Отображение интерфейса, д.быть первым параметром

       -l                      Выход (не совместим с параметром -m)
       -s                      Завершение работы компьютера
       -r                      Перезагрузка компьютера
       -a                      Прекращение завершения работы системы
       -m \\<компьютер>        Удаленный компьютер, на котором выполняется
                               действие
       -t xx                   Таймаут завершения работы — xx сек.
       -c «comment»            Комментарий (не более 127 знаков)
       -f                      Принудительное завершение приложений без
                               предварительного предупреждения
       -d [u][p]:xx:yy         Код причины завершения работы
                               u — пользовательский код
                               p — код запланированного завершения
                               xx — основной код причины (1 — 255)
                               yy — дополнительный код причины (1 — 65535)

   Chum

 

3 — 20.05.10 — 06:02

shutdown [{-l|-s|-r|-a}] [-f] [-m [\\ComputerName]] [-t xx] [-c «message»] [-d[u][p]:xx:yy]

Top of page
Parameters
-l : Logs off the current user, this is also the defualt. -m ComputerName takes precedence.

-s : Shuts down the local computer.

Как перезапустить сервер

-r : Reboots after shutdown.

-a : Aborts shutdown. Ignores other parameters, except -l and ComputerName. You can only use -a during the time-out period.

-f : Forces running applications to close.

-m [\\ComputerName] : Specifies the computer that you want to shut down.

-t xx : Sets the timer for system shutdown in xx seconds. The default is 20 seconds.

-c «message» : Specifies a message to be displayed in the Message area of the System Shutdown window.

You can use a maximum of 127 characters. You must enclose the message in quotation marks.

-d [u][p]:xx:yy : Lists the reason code for the shutdown. The following table lists the different values.

Value Description
u
Indicates a user code.

p
Indicates a planned shutdown code.

xx
Specifies the major reason code (0-255).

yy
Specifies the minor reason code (0-65536).

/? : Displays help at the command prompt.

   Chum

 

4 — 20.05.10 — 06:03

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/shutdown.mspx?mfr=true

   Нуф-Нуф

 

5 — 20.05.10 — 06:06

большое спасибо за помощь. пошел пробовать

   Нуф-Нуф

 

6 — 20.05.10 — 06:13

выполнить — shutdown /m \\office-15 /r /f /t 1

появляется черное окно. висит минуту. потом пропадает. комп не перезагружается

   Chai Nic

 

7 — 20.05.10 — 06:14

(6) В консоли запускай.. и смотри что пишет

   360i

 

8 — 20.05.10 — 06:36

Модно подключится через удаленный рабочий стол и там уже shutdown -s в командной строке…

   Нуф-Нуф

 

9 — 20.05.10 — 06:38

странно. есть два компа.
на один я могу зайти по «\\office-9» по сети и команда для него сработала,
а второй «\\office-10» — не могу подключиться по сети и не могу перезагрузить. ошибка «windows cannot find \\office-9. проверьте написание и попробуйте снова»

   360i

 

10 — 20.05.10 — 06:43

(9) через ip попробуй. И сделай tracert на его ip — увидишь его доменное имя, оно иногда отличается от того, что указано в Моем компьютере…

 
 
   smaharbA

 

11 — 20.05.10 — 06:44

про трасерт повеселило
(9) ищи брандмауер или отключенную службу доступа к файлам и принтерам или рпс

   360i

 

12 — 20.05.10 — 06:49

(11) А что тут веселого?

   Противный

 

13 — 20.05.10 — 07:04

LanShutDown для ленивых…

   Противный

 

14 — 20.05.10 — 07:05

+(13) http://www.lantricks.com/

   Dirk Diggler

 

15 — 20.05.10 — 07:38

(11) А точнее служба «сервер» и «удаленный реестр», а также шары ADMIN$ и IPC$ — которые в норме создаются службой «сервер», а также настройки видимости и групповые политики

   hd1

 

16 — 20.05.10 — 07:40

(13) это наоборот для тех кому не лень ставить дополнительный софт

   Нуф-Нуф

 

17 — 20.05.10 — 07:40

нашел компьютер через поиск компьютеров, попробовал открыть и вот
http://s03.radikal.ru/i176/1005/3b/f94df16ba774.jpg

   Нуф-Нуф

 

18 — 20.05.10 — 09:26

ап.

   Нуф-Нуф

 

19 — 20.05.10 — 09:34

куда копнуть

   Нуф-Нуф

 

20 — 20.05.10 — 09:46

блин отключил фаервол на удаленной машине — все заработало

   Противный

 

21 — 20.05.10 — 09:50

(20) видимо он еще параллельно с фрайволом антивируса еще работал…
ЗЫ: с каспером постоянно бодяга если его встроенный и виндовый совместно работают, там и доступ иногда отказывается к машине давать…

 

Наведи порядок в своей работе используя конфигурацию 1C "Управление IT-отделом 8"

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Повод для теоретических изысканий, как всегда, стала практическая проблема. От мониторинга стали поступать заявки, что резервные копии в одном из клиентов то выполняются, то завершаются сбоем. Детальный разбор показал, что место на NAS под резервные копии на грани исчерпания. Вот в зависимости от того, сколько файлов в ресурс добавили/удалили за день копия то помещается, то нет.

Перезагрузка сервера через командную строку и планировщик задач

Конечно, мы мониторим свободное место. Но раньше мы делали это средствами WMI, а его поддерживают только полноценные файловые сервера. Никакой NAS через WMI не управляется. Поэтому место на NAS раньше не проверялось. Сегодня я решил-таки поискать другие варианты. Первый ключевой вопрос – возможно ли это технически?

Отправной точкой для меня стало то, что в подключенном как сетевой диск DFS-ресурсе Windows правильно отображает свободное место. Затем я поэкспериментировал с командой dir, которая после списка файлов выводит объём диска и свободное место на нём. Как оказалось, команда dir корректно определяет свободное место в сетевых ресурсах, в том числе, на двух подопытных NAS.

Бюджетные NAS, как правило, видны в локальной сети как файловые ресурсы, доступные по протоколу SMB. SMB – протокол высокого уровня, данные в нём представимы не сплошным массивом байт, а структурированно. Доступны файлы, папки, права доступа, метаданные всякие. Обратимся к документации. В 2008 году под давлением антимонопольных структур Microsoft опубликовала спецификации многих ранее закрытых протоколов. В частности, в спецификации на протокол CIFS, тесно связанный с SMB, описана команда SMB_COM_QUERY_INFORMATION_DISK, позднее заменённая на команду SMB_COM_TRANSACTION2 с параметром TRANS2_QUERY_FS_INFORMATION. Клиент может её использовать для запроса полного объёма тома и оставшегося свободного места. Это хорошо. С другой стороны, никто не гарантирует полной поддержки всех команд SMB сторонним производителем. Поскольку читать/записывать данные можно и без запроса объёма свободного места, то, в принципе, возможно сделать NAS без поддержки такой команды. Однако, будем рассчитывать, всё-таки, на поддержку данной возможности, тем более что протестированные образцы запас свободного места отдают корректно.

Теперь нужно научиться делать такой запрос из программы. Вариант «в лоб» – вызывать уже протестированную команду dir, делать синтаксический разбор её ответа и извлекать оттуда свободное место. Работоспособно, но некрасиво. Поэтому я ещё немного порылся в Интернете и нашёл WinAPI-функцию GetDiskFreeSpaceEx, которая как раз и запрашивает полное и свободное место по сетевому пути. Ну а дальше – дело техники. Как работать с WinAPI в PowerShell мы уже разбирались. Используя функции из Win32.ps1, проверить место можно следующим скриптом:

$ulongOut = [UInt64].MakeByRefType()

ImportWin32Function «kernel32.dll» ([bool]) «GetDiskFreeSpaceEx» (
    [string], $ulongOut, $ulongOut, $ulongOut)

$lpFreeBytesAvailable = [UInt64]0
$lpTotalNumberOfBytes = [UInt64]0
$lpTotalNumberOfFreeBytes = [UInt64]0

$result = CallWin32Function «kernel32.dll» «GetDiskFreeSpaceEx» (
    $path,
    [ref]$lpFreeBytesAvailable,
    [ref]$lpTotalNumberOfBytes,
    [ref]$lpTotalNumberOfFreeBytes)

if($result) {
    $gigabytesAvailable = $lpFreeBytesAvailable / 1024 / 1024 / 1024
    Write-Host «Свободно $gigabytesAvailable Гб»
}
else {
    Write-Host «Произошла ошибка»
}


Начинаем серию переводов, посвященную управлению службами Windows с помощью PowerShell 2.0 и 3.0.
В данном посте будут рассмотрены следующие вопросы управления службами Windows:

  • Получаем статус службы на локальном компьютере
  • Получаем статус службы на удаленном компьютере
  • Осуществляем фильтрацию служб (например, остановленные службы)
  • Зависимые службы

Обозначим начальные условия: Вы работаете под Windows 7 и выше и у Вас имеются права администратора. Все команды рекомендуются выполнять в лабораторной или виртуальной среде, перед тем, как применять в “полевых условиях”.

ПОЛУЧАЕМ СТАТУС СЛУЖБЫ

Давайте начнем с того, что просто получим статус всех служб, запущенных на локальном компьютере. Используем для этого командлет Get-Service.

PowerShell, как правило, не чувствителен к регистру. Вывод приведен на скриншоте ниже.

Каждая строка представляет собой объект службы (service object).Каждый сервисный объект, как правило, имеет свои свойства. Вы можете открыть их, просто передав эти объекты в другую команду, Get-Member.

Результаты приведены на скриншоте ниже.

Параметр Typename сверху говорит о том, что за объект перед нами; в данном случае это System.ServiceProcess.ServiceController. На скриншоте также обведены свойства объекта. Это атрибуты, которые описывают этот тип объекта. Хотя большинство из них не используются при отображении по умолчанию, вы можете использовать их, если вы их знаете.
Например, нам интересно посмотреть информацию только о Windows Update. Через Get-Service получим информацию только о некоторых ее свойствах.

Как я узнал, что могу напечатать имя службы? Посмотрел с помощью Get-Service.
PS C:\> help get-service

Вы можете получить полную справочную информацию, напечатав:

Информацию о службе можно получить по ее имени или даже начальным буквам имени.

Или если вам удобнее работать с отображаемыми именами, используйте параметр –Displayname.

Я должен использовать имя параметра, чтобы PowerShell воспринимал значения в качестве отображаемого имени, а не фактического имени службы. Команда будет выглядеть так:

Параметр –Name можно не печатать.

ПОЛУЧАЕМ СТАТУС СЛУЖБЫ НА УДАЛЕННЫХ КОМПЬЮТЕРАХ

До этого нас интересовало получение информации о статусе служб на локальном компьютере. Однако управление службами осуществляется на удаленных компьютерах. Если посмотреть справку по Get-Service, то можно увидеть наличие у этого командлета параметра –Computername. В данном случае подключение к удаленным компьютерам осуществляется без включения функции удаленного управления PowerShell. Если вы можете управлять службами, используя инструменты командной строки (sc.exe или консоль управления Service Manager), вы можете использовать PowerShell. Давайте взглянем на пример:

Любая команда, которую я демонстрировал, можно использовать для передачи удаленному компьютеру. Даже нескольким компьютерам, если у вас есть соответствующие права на удаленном компьютере. Если вы используете PowerShell v3, то можно легко выбрать одну службу на множестве компьютеров.

Для наглядности представления отформатируем вывод.

Тот же самый результат, но в PowerShell v2.

ОСУЩЕСТВЛЯЕМ ФИЛЬТРАЦИЮ (ИСПОЛЬЗУЯ WHERE-OBJECT)

Фильтрация служб осуществляется с помощью командлета Where-Object (where – сокращение для командлета). Все, что нам нужно от PowerShell в этом случае, так это получить только те службы, у которых статус равен “stopped”.

PowerShell получает информацию обо всех службах и передает их (с помощью “|”) в следующую команду, которая осуществляет просмотр каждого объекта. Если свойство статуса объекта равно “stopped”, она остается в конвейере (pipeline), в противном случае она из него исключается. В конце выражение PowerShell отображает те объекты, которые остались в конвейере.
Результаты приведены ниже.

Теперь давайте попробуем найти одну службу на нескольких машинах.

Как удалённо перезагрузить Server 2012 R2?

Вывод отформатируем в таблицу.

Мы даже можем комбинировать запрос отдельных служб с их фильтрацией.

Эта команда находит все службы на компьютере CHI-DC03, которые начинаются с ‘WIN’, но отображает только те, которые запущены.
Также можно сгруппировать объекты по свойству статуса (status property).

Переменная $dc03 является объектом GroupInfo.

Свойство Group представляет собой коллекцию связанных служб.

Написанное выше проще понять, если взглянуть на скриншот.

Что касается меня, то я бы предпочел использовать хеш-таблицу.

Теперь каждое имя представляет собой свойство в хеш-таблице. Если у вас имеется опыт работы с PoweShell, вы, возможно, подумываете сделать сделующее:

Однако ничего не произойдет. Потому что свойство Status является просто перечислением (enumeration) для [System.ServiceProcess.ServiceControllerStatus] .NET клас и такие свойства, как Running и Stopped представляют собой целые числа. PowerShell осуществляет конвертацию, чтобы представить в более наглядной форме.

В чем суть параметра –AsString, на мой взгляд, достаточно очевидно. Теперь работать с хеш-таблицей стало проще.

Следующей задачей на повестке дня является проверка зависимостей сервера (server dependencies).

Требуемые службы

PowerShell позволяет просто получить статус всех служб, которые требуется для данной службы, даже на удаленном компьютере.

Параметр –RequiredServices передаст объект в конвейер для каждой требуемой службы.

Вы можете даже пойти дальше и проверить требуемые службы для работы данной службы.

Параметр –Computername командлета Get-Service возьмет вывод, но только для тех объектов, у которых есть объект свойство Computername – именно поэтому я использую хеш-таблицу с Select-Object. Как мы видим проблем со службой DNS на компьютере CHI-DC03 нет.

ЗАВИСИМЫЕ СЛУЖБЫ

Мы можем сделать то же самое с зависимыми службами. Если таковых не имеется, в конвейер ничего передано не будет.

Требуемые и зависимые службы также являются частью каждого объекта службы.

А пока Вы можете получить все зависимости для всех служб, следующая команда

Это не даст вам особо полезную информацию, поэтому я рекомендую осуществлять запрос по конкретным службам. Команда работает гораздо лучше PowerShell v3.

Результаты видны на скриншоте ниже.

Чтобы получить подобные результаты в PowerShell v2, вам придется передать имена компьютеров (computernames) в Get-Service.

В следующей статье будет рассмотрен запуск, остановка и перезапуск служб.
Конец перевода.

P.S. Хотим также поделиться нашей бесплатной программой для управления службами Windows – NetWrix Service Monitor. Программа отслеживает все автоматически запускаемые службы на группе серверов и в случае внезапного сбоя одной или нескольких из них отправляет уведомления по электронной почте. Функция перезапуска гарантирует, что все подконтрольные службы будут работать без простоев. Программа проста в настройке: устанавливаем, вводим имена компьютеров и указываем нужный адрес электронной почты.

ссылка на оригинал статьи http://habrahabr.ru/company/netwrix/blog/166289/

FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*