- WINRS — удалённое выполнение команд через WS-Management
- Синтаксис команды WINRS
- Ключи и параметры
- Примеры использования
- Выполнение простой команды на удалённом хосте
- Подключение с явными учётными данными
- Запуск PowerShell-скрипта на удалённом компьютере
- Выполнение команды в заданном каталоге
- Интерактивный удалённый сеанс CMD
- Использование HTTPS для шифрования трафика
- Получение списка процессов на удалённом хосте
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- Нужно ли настраивать что-то перед первым использованием WINRS?
- Чем WINRS отличается от PsExec?
- Какие порты использует WINRS?
- Можно ли использовать WINRS для работы с Linux?
- Как запустить команду сразу на нескольких серверах?
- Видит ли удалённый пользователь, что на его ПК выполняется команда?
WINRS — удалённое выполнение команд через WS-Management
WINRS (Windows Remote Shell) — встроенная CMD-утилита для выполнения команд и запуска программ на удалённых компьютерах Windows через протокол WS-Management (WinRM). В отличие от RDP, WINRS работает исключительно в командной строке и не требует графического сеанса, что делает её незаменимой для пакетного администрирования серверов.
Синтаксис команды WINRS
winrs [-/переключатель[:значение]] команда
Плейсхолдеры:
команда— любая команда CMD или путь к исполняемому файлу, которую нужно выполнить на удалённом хосте.- Все ключи начинаются с дефиса (
-) или косой черты (/) — оба варианта равнозначны.
Ключи и параметры
| Ключ | Описание | Пример |
|---|---|---|
-r:<хост> | Имя или IP-адрес удалённого компьютера (обязательный параметр) | -r:192.168.1.10 |
-u:<имя> | Имя пользователя для аутентификации на удалённом хосте | -u:Administrator |
-p:<пароль> | Пароль пользователя. При пропуске будет запрошен интерактивно | -p:P@ssw0rd |
-d:<каталог> | Рабочий каталог на удалённом компьютере, в котором выполняется команда | -d:C:\Scripts |
-env:<ПЕРЕМ>=<знач> | Задаёт переменную среды для удалённого процесса | -env:TMP=C:\Temp |
-noecho | Отключает отображение вводимых команд в интерактивном режиме | -noecho |
-noprofile | Не загружать профиль пользователя на удалённом хосте | -noprofile |
-allowdelegate | Разрешить делегирование учётных данных (для доступа к сетевым ресурсам с удалённого хоста) | -allowdelegate |
-usessl | Использовать HTTPS (порт 5986) вместо HTTP (порт 5985) | -usessl |
-? | Вывести справку по синтаксису команды | winrs -? |
Примеры использования
Выполнение простой команды на удалённом хосте
Получить сетевую конфигурацию компьютера Server01 из локальной сети без подключения по RDP.
winrs -r:Server01 ipconfig /all
Результат команды ipconfig /all будет выведен в локальную консоль.
Подключение с явными учётными данными
Если текущий пользователь не имеет прав на удалённом хосте, укажите логин и пароль явно.
winrs -r:192.168.1.50 -u:DOMAIN\Admin -p:Secret123 hostname
Команда hostname вернёт имя компьютера 192.168.1.50.
Запуск PowerShell-скрипта на удалённом компьютере
WINRS позволяет запускать PowerShell как процесс на удалённой машине.
winrs -r:Server02 powershell -ExecutionPolicy Bypass -File "C:\Scripts\report.ps1"
Скрипт report.ps1 выполнится на Server02, вывод появится в локальной консоли.
Выполнение команды в заданном каталоге
Ключ -d задаёт рабочий каталог на удалённой машине — полезно для bat-файлов с относительными путями.
winrs -r:BuildServer -d:C:\Build cmd /c "build.bat release"
Скрипт build.bat запустится из каталога C:\Build на BuildServer.
Интерактивный удалённый сеанс CMD
Без явной команды WINRS открывает интерактивный сеанс командной строки на удалённом хосте.
winrs -r:Server01 cmd
Введите exit, чтобы завершить удалённый сеанс и вернуться в локальную консоль.
Использование HTTPS для шифрования трафика
В средах с повышенными требованиями к безопасности используйте зашифрованное соединение на порту 5986.
winrs -r:https://SecureServer:5986 -usessl -u:Admin -p:Pass ipconfig
Требуется действующий SSL-сертификат на стороне сервера и включённый HTTPS-listener WinRM.
Получение списка процессов на удалённом хосте
Быстрый мониторинг запущенных процессов без GUI-инструментов.
winrs -r:Server03 tasklist /FO TABLE
Вывод будет отформатирован таблицей — удобно для парсинга в скриптах.
Частые ошибки и решения
| Ошибка | Причина | Решение |
|---|---|---|
WinRM не может завершить операцию / нет соединения | Служба WinRM не запущена или не настроена на удалённом хосте | На удалённом хосте выполнить winrm quickconfig с правами администратора |
Отказано в доступе при верных учётных данных | Учётная запись не входит в группу «Пользователи удалённого управления» или локальных администраторов | Добавить пользователя в группу Remote Management Users на целевом хосте |
| Ошибка подключения к хосту в рабочей группе (не домен) | WINRS по умолчанию доверяет только хостам в домене | Добавить хост в список доверенных: winrm set winrm/config/client @{TrustedHosts="IP_или_имя"} |
| Команда выполняется, но вывод не отображается | Программа пишет в stderr, а не stdout, либо требует интерактивного ввода | Добавить перенаправление: команда 2>&1; для интерактивных программ использовать winrs -r:хост cmd |
Ошибка SSL-сертификата при -usessl | Самоподписанный или просроченный сертификат на сервере | Установить действующий сертификат или добавить исключение через политику WinRM |
Когда применять, а когда нет
Используйте WINRS, когда нужно быстро выполнить одну команду или запустить скрипт на удалённом Windows-сервере без открытия RDP-сессии. Это удобно для пакетных операций: сбор данных, перезапуск служб, запуск сборок. Не применяйте WINRS для задач, требующих графического интерфейса или интерактивного ввода с паролями — используйте RDP или PSSession. Команда работает только при включённом и настроенном WinRM (TCP 5985/5986). В PowerShell функциональным аналогом является Invoke-Command -ComputerName, который предоставляет более богатые возможности: передачу объектов, параллельное выполнение, поддержку PSRemoting.
FAQ
Нужно ли настраивать что-то перед первым использованием WINRS?
Да. На удалённом компьютере необходимо включить службу WinRM командой winrm quickconfig с правами администратора. На клиенте — добавить удалённый хост в список доверенных, если он не в том же домене.
Чем WINRS отличается от PsExec?
WINRS использует стандартный протокол WS-Management (WinRM), встроенный в Windows, и не требует сторонних утилит. PsExec работает через именованные каналы SMB и устанавливает собственный сервис на удалённом хосте. WINRS предпочтительнее в управляемых корпоративных средах.
Какие порты использует WINRS?
HTTP-режим — TCP 5985, HTTPS-режим (-usessl) — TCP 5986. Убедитесь, что брандмауэр пропускает соответствующий порт.
Можно ли использовать WINRS для работы с Linux?
Нет. WINRS работает только с Windows-хостами, где запущен WinRM. Для управления Linux-серверами используйте SSH или PowerShell с OpenSSH-ремотингом.
Как запустить команду сразу на нескольких серверах?
WINRS не поддерживает несколько хостов в одной команде. Для параллельного выполнения используйте PowerShell: Invoke-Command -ComputerName Server1,Server2 -ScriptBlock { команда }.
Видит ли удалённый пользователь, что на его ПК выполняется команда?
Нет видимых уведомлений. Процесс запускается в фоне от имени указанного пользователя. При необходимости аудита включите журнал событий WinRM на целевом хосте.


