Команды cmd Windows | Блог любителя экспериментов -Блог любителя экспериментов

Начинаем работать

Знакомство с обработчиком команд Windows начинаем со списка команд, который получаем с помощью директивы help. Набираем ее в командной строке и делаем запуск на выполнение нажатием клавиши Enter:help

Список состоит из двух колонок — названия команды и ее описания.

Получить подробную справку можно двумя способами:help имя_командыилиимя_команды /?

Пример: получаем справку по chkdsk:help chkdskилиchkdsk /?

Чтобы избежать повторного набора пользуемся буфером команд, который листается с помощью комбинаций клавиш Shift ↑ или Shift ↓.

Пользуемся правой кнопкой мыши для вставки содержимого буфера обмена на экран обработчика cmd.

Команда cls предназначена для очистки экрана:cls

Для выхода из cmd пользуемся директивой exit:exit

Как видите, все просто. Теперь разберемся, зачем нужны команды cmd, как ими пользоваться и какие задачи они позволяют решить.

Del, copy, type

del и copy предназначены соответственно для того чтобы удалять и копировать файлы.

Удаляем все файлы с расширением .tmp из текущей папки:

del *.tmp

Копируем из папки music диска d: все файлы с расширением .mp3 на флешку с логическим именем f:

copy d:music*.mp3 f:

Наше знакомство с командами этой группы завершает директива type предназначенная для вывода на экран содержимого текстового файла:

type D:”Басни Крылова””Лисица и Виноград.txt”

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

Mkdir и rmdir

mkdir занимается созданием папок (каталогов), причем может создать сразу целое дерево test->test1->test2:

mkdir testtest1test2

А rmdir с ключом /S легко это дерево удалит:

rmdir /S test

Net — самая популярная сетевая утилита

net — одна из самых используемых команд, поскольку позволяет выполнять множество задач с сетевыми ресурсами:

  • подключение/отключение сетевых дисков;
  • запуск/остановку системных служб;
  • добавить/удалить пользователей;
  • управление совместно используемыми «расшаренными» ресурсами;
  • установку системного времени;
  • отображение информации об использовании ресурсов.

Мы продемонстрируем одну из возможностей программы net.exe — работу с системными службами на примере диспетчера очереди печати.

Для доступа к службам мы привыкли пользоваться интерфейсом windows, но, зная имя службы, а диспетчера печати «зовут» Spooler, ее очень просто остановить

net stop Spooler

и запустить заново.

net start Spooler

Получить список сетевых служб можно с помощью такого предложения:

net help services

Но если вы хотите работать с диспетчером печати, источником бесперебойного питания, диспетчером подключений удаленного доступа через службы windows, их тоже можно запустить из cmd с помощью файла оснастки:

services.msc

Выполняем настройки

После запуска cmd можно заняться его настройкой с помощью контекстного меню, которое открываем щелчком правой кнопки мыши по заголовку окна. Затем выбираем опцию Умолчания и выполняем настройки.

Настраиваем возможность использования мыши для выделения текста:

Теперь мы можем выделять фрагмент текста левой кнопкой мыши и нажатием клавиши Enter копировать его в буфер обмена.

Пользуемся вкладками Цвета, Шрифт и Расположение для выполнения остальных настроек.

Заметим, что все настройки установленные с помощью опции Умолчания сохраняются для всех последующих сеансов работы cmd. Если требуется выполнить задачу настройки только для текущего сеанса, следует воспользоваться опцией Свойства контекстного меню.

Запуск службы из powershell

Во избежании ошибки «Access is denied«, запустите PowerShell с правами администратора: нажмите клавишу Win, чтобы открыть меню «Пуск», наберите powershell, чтобы найти командную строку и нажмите комбинацию Ctrl Shift Enter, чтобы запустить PowerShell от имени администратора.

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

Запустить службу:

PS C:> Start-Service serviceName

Узнать состояние службы:

PS C:> Get-Service serviceName

Остановить службу:

PS C:> Stop-Service serviceName

Запуск службы из командной строки (cmd)

Во избежании ошибки «Access is denied«, запустите CMD с правами администратора: нажмите клавишу Win, чтобы открыть меню «Пуск», наберите cmd, чтобы найти командную строку и нажмите комбинацию Ctrl Shift Enter, чтобы запустить командную строку от имени администратора.

Используйте следующие команды, чтобы запустить, остановить или проверить статус службы в Windows из командной строки (CMD).

Запустить службу:

C:> net start serviceName

Узнать состояние службы:

C:> sc query serviceName

Остановить службу:

C:> net stop serviceName

Зачем нужна служба, если есть назначенные задания

В отличие от назначенных заданий служба работает постоянно, запускается при старте ПК и может управляться средствами Windows. А еще регулярно запускаемому скрипту могут понадобиться данные с предыдущего запуска, и может быть полезно получение данных из внешних источников — например, в случае TCP или Web сервера.

:/>  Режим разработчика на Windows 10: для чего нужен, как включить и отключить

Лично мне за последние пять лет приходилось создавать службу три с половиной раза:

  • Потребовалось создать сервис на fail2ban для Windows 2003., который работал с логами FileZilla и Apache, а при подозрении на брутфорс блокировал IP штатными средствами Windows — ipsec.
  • Аналог телнет-сервера для домашних версий Windows. Понадобилось выполнять команды на удаленных рабочих станциях, которые были под управлением Windows 7 Home. По сути, вторая попытка поиграть в службы.
  • Музыкальный проигрыватель для торгового зала под Windows. Задачу по ТЗ можно было решить при помощи mpd и пачки скриптов, но я решил — если уж делать скрипты, то почему бы и не «сваять» проигрыватель самому. За основу взял библиотеку BASS.dll.
  • Когда выбирали веб-сервер с поддержкой загрузки файлов под Windows, одним из вариантов был HFS. Сам по себе работать он не может, поэтому пришлось «запихивать» его в службу. В результате решение не понравилось, и просто установили «тему» Apaxy на web-сервере Apache.

Для создания службы можно использовать взрослые языки программирования вроде C. Но если вы не хотите связываться с Visual Studio, то возьмите готовые утилиты. Существуют платные решения вроде FireDaemon Pro или AlwaysUp, но мы традиционно сосредоточимся на бесплатных.

Идем дальше

С консоли cmd можно запускать не только службы windows:

  • запуск диспетчера задач:
    taskmgr.exe
  • запуск редактора реестра:
    regedit.exe
  • запуск диспетчера устройств:
    devmgmt.msc

Некоторые программы имеющие интерфейс командной строки превосходят стандартные программы windows. Например, программа devcon.exe называемая диспетчером устройств командной строки не только обеспечивает возможность включать/выключать/удалять устройства и обновление драйверов, но и предоставляет разработчикам драйверов такие сведения об устройствах, которые невозможно получить с помощью диспетчера устройств windows.

Команды cmd Windows | Блог любителя экспериментов            -Блог любителя экспериментов

Команды cmd windows | блог любителя экспериментов -блог любителя экспериментов

Запуск команд из CMD Доброго времени, читатели www.msconfig.ru. Сегодня в очередной раз пришлось лезть в поиск за необходимо справкой. Часто приходится помогать пользователям Windows прямо из учетной записи пользователя, а под рукой не оказывается инструментов, кроме встроенной в Windows командной строки cmd.exe. При работе под ограниченной в правах учетной записью часто приходится выполнить какую-то задачу с повышенными правами Администратора. cmd для этих задач самое подходящее средство, чтобы не вводить по-многу раз пароль  администратора, достаточно один раз запустить командную строку от имени администратора и

выполнять нужные действиязапускать нужные команды

, которые я опишу ниже

:

appwiz.cpl – Установка и удаление программ
certmgr.msc – Сертификаты
ciаdv.msc – Служба индексирования
cliconfg – Программа сетевого клиента SQL
clipbrd – Буфер обмена
compmgmt.msc – Управление компьютером
dcomcnfg – Консоль управления DCOM компонентами
ddeshare – Общие ресурсы DDE (на Win7 не работает)
desk.cpl – Свойства экрана
devmgmt.msc — Диспетчер устройств
dfrg.msc – Дефрагментация дисков
diskmgmt.msc – Управление дисками
drwtsn32 – Dr.Watson
dxdiag – Служба диагностики DirectX
eudcedit – Редактор личных символов
eventvwr.msc – Просмотр событий
firewall.cpl – настройки файерволла Windows
gpedit.msc – Груповая политика
iexpress – IExpress (не знаю что это :) )
fsmgmt.msc – Общие папки
fsquirt – Мастер передачи файлов Bluetooth
chkdsk – Проверка дисков (обычно запускается с параметрами буква_диска: /f /x /r)
control printers – Принтеры и факсы – запускается не всегда
control admintools – Администрирование компьютера – запускается не всегда
control schedtasks – Назначенные задания (планировщик)
control userpasswords2 – Управление учётными записями
compmgmt.msc – Управление компьютером (compmgmt.msc /computer=pc – удаленное управление компьютером pc)
lusrmgr.msc – Локальные пользователи и группы
mmc— создание своей оснастки
mrt.exe – Удаление вредоносных программ
msconfig – Настройка системы (автозапуск, службы и др…)
mstsc – Подключение к удаленному рабочему столу
ncpa.cpl – Сетевые подключения
ntmsmgr.msc – Съёмные ЗУ
ntmsoprq.msc – Запросы операторов съёмных ОЗУ (для XP)
odbccp32.cpl – Администратор источников данных
perfmon.msc – Производительность
regedit – Редактор реестра
rsop.msc – Результатирующая политика
secpol.msc – Локальные параметры безопасности (Локальная политика безопасности)
services.msc – Службы
sfc /scannow – Восстановление системных файлов
sigverif – Проверка подписи файла
sndvol — управление громкостью
sysdm.cpl – Свойства системы
sysedit – Редактор системных файлов (не знаю, что это :) )
syskey – Защита БД учётных записей
taskmgr – Диспетчер задач
utilman Диспетчер служебных программ
verifier Диспетчер проверки драйверов
wmimgmt.msc – Инфраструктура управления WMI

:/>  Dolya_po_C++

Данный список – это в основном GUI’овые пролижения. Ниже в отдельный список выделю консольные команды.

Также запустить приложения в панели управления с правами администратора, можно если щелкнуть правой кнопкой мышки одновременно удерживая клавишу Shift. И выбрать Запуск от имени.(RunAs…) (актуально для Win XP).

Список консольных команд:

nbtstat -a pc — имя пользователя работающего за удаленной машиной pc
net localgroup group user /add — Добавить в группу group, пользователя user
net localgroup group user /delete — Удалить пользователя из группы
net send pc ”текст ‘‘ – отправить сообщение пользователю компьютера pc
net sessions — список пользователей
net session /delete – закрывает все сетевые сессии
net use l: \имя компапапка – подключить сетевым диском l: папку на удаленном компьютере
net user имя /active:no – заблокировать пользователя
net user имя /active:yes – разблокировать пользователя
net user имя /domain – информация о пользователе домена
net user Имя /add — добавить пользователя
net user Имя /delete — удалить пользователя
netstat -a – список всех подключений к компьютеру
reg add — Добавить параметр в реестр
reg compare — Сравнивать части реестра.
reg copy — Копирует из одного раздела в другой
reg delete — Удаляет указанный параметр или раздел
reg export — Экспортировать часть реестра
reg import — Соответственно импортировать часть реестра
reg load — Загружает выбранную часть реестра
reg query — Выводит значения заданной ветки реестра
reg restore — Восстанавливает выбранную часть реестра из файла
reg save — Сохраняет выбранную часть реестра
reg unload — Выгружает выбранную часть реестра
shutdown — выключение компьютера , можно удаленно выключить другой.
SystemInfo /s machine – покажет много полезного об удаленной машине

Большинство материала было взято с padmoga.com, а так же из поисковиков :) Со временем буду пополнять материал. Надеюсь, кому-то моя справка тоже понадобится.

С Уважением, Mc.Sim!


Теги: cmd, Microsoft Windows, команды, консоль

Открываем программы и оснастки windows c помощью командной строки | заметки сисадмина

Не секрет, что в Windows очень многие программы, элементы панели управления, оснастки mmc, настройки и т.д. – можно открыть через командную строку. Команды можно вводить, как через оболочку командной строки cmd, оболочку PoweShell, так и через классическое “Пуск – Выполнить” или попросту R

С последним, как с самым простым, чаще всего возникают проблемы. Говоришь человеку нажать “Виндовс Эрр” – он смотрит на тебя, как на дебила и руками водит. Короче. Раз и навсегда: на любой клавиатуре есть клавиша Windows. Находиться она между Ctrl и Alt. На ней, кто бы мог подумать, нарисован значок Windows. Так вот, что бы открыть окно, куда вводить все эти команды – сначала нажимаем на эту кнопочку, а потом на английскую клавишу “R”. Вводим команду, нажимаем “ОК”. Наслаждаемся результатом.

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

Работаем с сетью

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

Работаем с файлами и папками

Несмотря на то, что Проводник Windows специально предназначен для работы с файлами и папками многие пользователи предпочитают ему файловые менеджеры такие как, например, Total Commander. Без сомнения, работать с любой из этих программ гораздо удобнее, чем с командной строкой.

Способ второй, почти взрослый

Существует утилита под названием NSSM — Non-Sucking Service Manager, что можно перевести как не-плохой менеджер служб. В отличие от предыдущей, она поддерживается разработчиком, и исходный код опубликован на сайте. Помимо обычного способа, доступна и установка через пакетный менеджер Chocolately.

:/>  Как закрыть окно с помощью клавиатуры

Создать сервис можно из обычной командной строки, вооружившись документацией на сайте разработчика. Но мы воспользуемся PowerShell. Потому что можем, разумеется.

$nssm = (Get-Command ./nssm).Source
$serviceName = 'WebServ'
$powershell = (Get-Command powershell).Source
$scriptPath = 'C:tempPolarisserver.ps1'
$arguments = '-ExecutionPolicy Bypass -NoProfile -File "{0}"' -f $scriptPath
& $nssm install $serviceName $powershell $arguments
& $nssm status $serviceName
Start-Service $serviceName
Get-Service $serviceName

Команды cmd Windows | Блог любителя экспериментов            -Блог любителя экспериментов
Установка через PowerShell.

Для разнообразия проверим работу службы не браузером, а тоже через PowerShell командой Invoke-RestMethod.

Команды cmd Windows | Блог любителя экспериментов            -Блог любителя экспериментов
И вправду работает.

В отличие от srvany, этот метод позволяет перезапускать приложение на старте, перенаправлять stdin и stdout и многое другое. В частности, если не хочется писать команды в командную строку, то достаточно запустить GUI и ввести необходимые параметры через удобный интерфейс.

GUI запускается командой:

nssm.exe install ServiceName

Команды cmd Windows | Блог любителя экспериментов            -Блог любителя экспериментов
Настроить можно даже приоритет и использование ядер процессора.

Действительно, возможностей куда больше, чем у srvany и ряда других аналогов. Из минусов бросается в глаза недостаточный контроль над всем процессом.

Налицо нехватка «жести». Поэтому я перейду к самому хардкорному методу из всех опробованных.

Способ первый. от microsoft

Этот уже немолодой механизм состоит из двух компонентов: утилиты instsrv.exe для установки сервиса и srvany.exe — процесса для запуска любых исполняемых файлов. Предположим, что мы создали веб-сервер на PowerShell при помощи модуля Polaris. Скрипт будет предельно прост:

Способ третий. autoit

Поскольку я давний любитель этого скриптового языка, то не смог пройти мимо библиотеки под названием _Services_UDF v4. Она снабжена богатой документацией и примерами, поэтому под спойлером сразу приведу полный текст получившегося скрипта.

Листинг скрипта

Итак, попробуем «завернуть» в нее наш веб-сервис:

#NoTrayIcon
#RequireAdmin
#Region
#AutoIt3Wrapper_Version=Beta
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Compile_Both=y
#AutoIt3Wrapper_UseX64=y
#EndRegion

Dim $MainLog = @ScriptDir & "test_service.log"

#include <services.au3>
#include <WindowsConstants.au3>

$sServiceName="WebServ"

If $cmdline[0] > 0 Then
    Switch $cmdline[1]
        Case "install", "-i", "/i"
            InstallService()
        Case "remove", "-u", "/u", "uninstall"
            RemoveService()
        Case Else
            ConsoleWrite(" - - - Help - - - " & @CRLF)
            ConsoleWrite("params : " & @CRLF)
            ConsoleWrite(" -i : install service" & @CRLF)
            ConsoleWrite(" -u : remove service" & @CRLF)
            ConsoleWrite(" - - - - - - - - " & @CRLF)
            Exit
    EndSwitch
Else
    _Service_init($sServiceName)
    Exit
EndIf

Func _main($iArg, $sArgs)
If Not _Service_ReportStatus($SERVICE_RUNNING, $NO_ERROR, 0) Then
    _Service_ReportStatus($SERVICE_STOPPED, _WinAPI_GetLastError(), 0)
    Exit
EndIf

$bServiceRunning = True
$PID=Run("C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy Bypass -NoProfile -File C:tempPolarisserver.ps1")

While $bServiceRunning
_sleep(1000)
WEnd
ProcessClose($PID)

_Service_ReportStatus($SERVICE_STOP_PENDING, $NO_ERROR, 1000)
DllCallbackFree($tServiceMain)
DllCallbackFree($tServiceCtrl)
_Service_ReportStatus($SERVICE_STOPPED, $NO_ERROR, 0)
DllClose($hAdvapi32_DLL)
DllClose($hKernel32_DLL)
EndFunc

Func _Sleep($delay)
Local $result = DllCall($hKernel32_DLL, "none", "Sleep", "dword", $delay)
EndFunc

Func InstallService()
    #RequireAdmin
    Local $bDebug = True
    If $cmdline[0] > 1 Then
        $sServiceName = $cmdline[2]
    EndIf
    If $bDebug Then ConsoleWrite("InstallService("&$sServiceName &"): Installing service, please wait")
    _Service_Create($sServiceName, $sServiceName, $SERVICE_WIN32_OWN_PROCESS, $SERVICE_AUTO_START, $SERVICE_ERROR_SEVERE, '"' & @ScriptFullPath & '"');,"",False,"","NT AUTHORITYNetworkService")
    If @error Then
        Msgbox("","","InstallService(): Problem installing service, Error number is " & @error & @CRLF & " message : " & _WinAPI_GetLastErrorMessage())
    Else
        If $bDebug Then ConsoleWrite("InstallService(): Installation of service successful")
    EndIf
    Exit
EndFunc

Func RemoveService()
    _Service_Stop($sServiceName)
    _Service_Delete($sServiceName)
    If Not @error Then
    EndIf
    Exit
EndFunc

Func _exit()
    _Service_ReportStatus($SERVICE_STOPPED, $NO_ERROR, 0);
EndFunc

Func StopTimer()
    _Service_ReportStatus($SERVICE_STOP_PENDING, $NO_ERROR, $iServiceCounter)
    $iServiceCounter  = -100
EndFunc

Func _Stopping()
    _Service_ReportStatus($SERVICE_STOP_PENDING, $NO_ERROR, 3000)
 EndFunc

Разберу подробнее момент запуска приложения. Он начинается после операции $bServiceRunning = True и превращается в, казалось бы, бесконечный цикл. На самом деле этот процесс прервется, как только служба получит сигнал о завершении — будь то выход из системы или остановка вручную.

Поскольку программа для скрипта является внешней (powershell.exe), то после выхода из цикла нам нужно закончить ее работу с помощью ProcessClose.

Для этого скрипт необходимо скомпилировать в .exe, а затем установить службу, запустив exe с ключом -i.

Команды cmd Windows | Блог любителя экспериментов            -Блог любителя экспериментов
Оно работает!

Разумеется, этот способ не самый удобный, и все дополнительные возможности придется реализовывать самостоятельно, будь то повторный запуск приложения при сбое или ротация логов. Но зато он дает полный контроль над происходящим. Да и сделать в итоге можно куда больше — от уведомления в Telegram о сбое службы до IPC-взаимодействия с другими программами. И вдобавок — на скриптовом языке, без установки и изучения Visual Studio.

Расскажите, а вам приходилось превращать скрипты и приложения в службы?

Оставьте комментарий