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
Поиск событий по 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 или новее.
Поиск в логе 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 /? Без аргументов Вывод справки по использованию (как и -?) -l Выход (не совместим с параметром -m) |
|
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 -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 p xx yy /? : 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 |
странно. есть два компа. |
|
360i
10 — 20.05.10 — 06:43 |
(9) через ip попробуй. И сделай tracert на его ip — увидишь его доменное имя, оно иногда отличается от того, что указано в Моем компьютере… ![]() |
|
smaharbA
11 — 20.05.10 — 06:44 |
про трасерт повеселило |
|
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 |
нашел компьютер через поиск компьютеров, попробовал открыть и вот |
|
Нуф-Нуф
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 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 – сокращение для командлета). Все, что нам нужно от PowerShell в этом случае, так это получить только те службы, у которых статус равен “stopped”.
PowerShell получает информацию обо всех службах и передает их (с помощью “|”) в следующую команду, которая осуществляет просмотр каждого объекта. Если свойство статуса объекта равно “stopped”, она остается в конвейере (pipeline), в противном случае она из него исключается. В конце выражение PowerShell отображает те объекты, которые остались в конвейере.
Результаты приведены ниже.
Теперь давайте попробуем найти одну службу на нескольких машинах.
Вывод отформатируем в таблицу.
Мы даже можем комбинировать запрос отдельных служб с их фильтрацией.
Эта команда находит все службы на компьютере 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