Как из командной строки подключиться к другому компьютеру

Table of contents

  • MSTSC commands and switches
  • Troubleshoot RDC via command line
  • Frequently Asked Questions

Let us help you become aware of the switch options and how you can use them to configure your RDC connections.

MSTSC commands and switches

The conventional way to open the RDC in Windows is by searching for “Remote Desktop Connection” or “RDC” in Run and open the tool.

Как из командной строки подключиться к другому компьютеру

Search for RDC

This then opens the RDC tool where you can enter the name of IP address with port number (optional) of the remote computer that you want to connect to.

Как из командной строки подключиться к другому компьютеру

RDC tool with IP address

Most of you would already be aware of this method.

This section covers the possible commands and switches that you can use with RDC via the command line. We shall start with the most basic ones and then continue.

Launch RDC from Run

Как из командной строки подключиться к другому компьютеру

mstsc in Run

Running this will open the RDC with a blank text field. However, with the addition of a few switches, you can change the settings and preferences of the RDC connection. Let us continue forward with a few examples.

Use RDC to connect via console

Although RDC fully supports GUI, you can also connect to remote machines through a console. This will help in case you wish to continue the session that you got disconnected from earlier. In contrast, a regular GUI-based RDC session creates a new session each time you connect to the same machine.

Как из командной строки подключиться к другому компьютеру

Launch RDC with IP address

Replace IPAddress with the complete IP address of the remote computer that you want to connect with, and PortNumber with the port number if changed from its default value.

Как из командной строки подключиться к другому компьютеру

mstsc with IP address and port number

Launch RDC with computer name

You can also connect to the remote computer by its unique computer name. The switch used for this is the same one used with the IP address and port number in the steps above.

Replace ComputerName with the unique name of the remote device that you can find in its settings or properties.

Как из командной строки подключиться к другому компьютеру

RDC with computer name

Launch RDC in full-screen mode

You can also launch the RDC connection in full-screen mode. Here is how:

Как из командной строки подключиться к другому компьютеру

RDC in full-screen mode

These switches can be combined into a single command to execute an RDC connection to your preferences. Here is an example:

mstsc /f /v:192.168.10.122:8002

Как из командной строки подключиться к другому компьютеру

RDC full-screen with IP address and port number

There are more commands and switches you can use with mstsc command-line to adjust your settings for the connection beforehand. Here is the complete list:

MSTSC commands and Switches

Troubleshoot RDC via command line

You can also troubleshoot Remote Desktop services through the command line. For example, if you are unable to connect to a device using the GUI RDC but have access via console, you can check whether there are any configurations to be made that will connect you via GUI successfully.

Check if RDP is enabled from Command prompt

Learn how to enable RDP remotely.

Как из командной строки подключиться к другому компьютеру

Check RDP status from Command Prompt

If the results come back as “Listening,” it means that RDP is enabled.

Check if RDP is enabled from PowerShell

Как из командной строки подключиться к другому компьютеру

Check RDP status from PowerShell

If the script returns “RDP is enabled,” it means that it is.

Frequently Asked Questions

You can open the Remote Desktop Connection window from Run or Command Prompt using mstsc. You may also add switches like /v and /f to control the connection’s arguments.

Is the RDP and RDC the same?

Remote Desktop Connection (RDC) is a tool used to establish a remote connection between devices. Remote Desktop Protocol (RDP) is the technology that RDC uses to create this remote connection.

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

Так как задача эта популярная, то и способов её решения существует множество. Начиная от групповых политик (в которых можно применять для этой цели сценарии входа в систему или автозагрузки), и заканчивая мощными системами управления, вроде System Center Essentials или System Center Configuration Manager. Но я в этой статье хочу рассмотреть методы, которые доступны сразу из командной строки или файлов сценариев, а также не требуют предварительной установки агентов и прочей суматохи. Впрочем, какие-то предварительные требования конечно есть. Например, у вас должны быть административные полномочия на том компьютере, на котором вы хотите выполнить команду (за исключением сценария с «проксированием», но об этом позже).

PsExec. exe

Использовать PsExec очень просто. Например, чтобы выполнить ipconfig /flushdns на компьютере main, достаточно запустить следующую команду:

Как из командной строки подключиться к другому компьютеру

Разумеется, на этом возможности PsExec не заканчиваются. Вызвав утилиту без параметров, можно посмотреть другие доступные опции. Я обращу внимание лишь на некоторые из них.

Ключ -d говорит PsExec что ненужно дожидаться выполнения команды, а достаточно лишь запустить её, и забыть. В этом случае мы не получим выходных данных от консольной утилиты, но зато сможем не дожидаясь завершения предыдущей команды запускать другие. Это очень полезно, если вам необходимо запустить, например установщик программы на нескольких компьютерах.

По умолчанию PsExec выполняет команды в скрытом режиме, то есть на системе где выполняется команда, не будут выводиться никакие окна или диалоги. Однако есть возможность изменить это поведение, с помощью ключа -i . После него можно указать номер сессии, в которой выводить окна, а можно и не указывать, тогда интерфейс будет отображен в консольной сессии.

Таким образом, чтобы вывести окно с информацией о версии операционной системы на компьютере main, следует запустить PsExec таким образом:

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

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

Как из командной строки подключиться к другому компьютеру

Каким образом работает PsExec?

По завершению подготовительных действий, PsExec устанавливает и запускает службу, используя API функции Windows для управления службами. После того как PSEXESVC запустится, между ним и PsExec создаётся несколько каналов для передачи данных (вводимых команд, результатов, и т.д.). Завершив работу, PsExec останавливает службу, и удаляет её с целевого компьютера.

Windows Management Instrumentation (WMI)

Следующий способ реализации этой популярной задачи, о котором я хочу поведать – использование Windows Management Instrumentation. WMI присутствует во всех операционных системах Microsoft, начиная с Windows 2000, и даже на Windows 9x его можно установить из отдельного пакета. WMI включён по умолчанию, и не требует дополнительной настройки. Для его использования достаточно административных прав, и разрешенного на брандмауэре протокола DCOM. WMI предоставляет огромные возможности для управления системами, но нас сейчас интересует лишь одна из них.

Для запуска процессов нам потребуется метод Create класса Win32_Process. Использовать его достаточно несложно. В PowerShell это делается следующим образом:

Если вы используете компьютер, на котором пока не установлен PowerShell, вы можете вызвать этот метод WMI и из сценария на VBScript. Например, вот так:

Листинг №1 – Запуск процесса используя WMI (VBScript)

Но гораздо проще воспользоваться утилитой командной строки wmic.exe которая предоставляет достаточно удобный интерфейс для работы с WMI и входит в состав операционных систем, начиная с Windows XP. В ней чтобы запустить, например калькулятор на компьютере main достаточно выполнить следующую команду:

Разумеется, возможности WMI не ограничиваются только запуском процессов. Если вам интересно дальнейшее изучение этой технологии, я рекомендую ознакомиться со статьями Константина Леонтьева, посвященными WMI, ссылки на которые вы можете найти в конце статьи.

WSH Remote Scripting

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

Итак, для запуска сценария на другом компьютере с помощью WSH нам понадобится сделать следующее:

  • Права администратора на удалённом компьютере. Это само собой разумеется, и требуется почти для всех остальных методов запуска, перечисленных в этой статье.
  • Разрешить WSH Remote Scripting создав в системном реестре строковой параметр Remote равный “1” в ключе реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows Script HostSettings
  • Из-за ошибки описанной в статье базы знаний Microsoft с номером 311269, на системах с Windows XP может понадобиться выполнить команду wscript –regserver
  • Если на компьютерах используется брандмауэр, то в нём необходимо разрешить обращения к DCOM. Причем сделать это надо не только на управляемом компьютере, но и на том с которого вы хотите запускать сценарий.
  • DCOM: Machine Access Restrictions in Security Descriptor Definition Language (SDDL) syntax
    Выдать группам Anonymous Logon и Everyone разрешения Allow Local и Allow Remote Access

Ну и после всех этих процедур, можно попробовать запустить свой сценарий на другом компьютере.

Пример сценария, который использует эту технологию:

Листинг №2 – WSH remote scripting (VBScript)

На второй его строчке, в качестве параметров для функции CreateScript указывается путь к файлу сценария, который будет выполнен на удаленном компьютере и собственно имя этого компьютера.

:/>  Срок действия вашей лицензии Windows 10 истекает: как убрать сообщение, 4 шага

Планировщик заданий (Task Scheduler)

Планировщиком заданий можно управлять из командной строки используя две утилиты – at.exe и schtasks.exe. Обе эти утилиты позволяют указать имя удалённого компьютера для создания задания, и, следовательно, позволяют решить нашу задачу. Но подробно мы рассмотрим лишь schtasks.exe, так как она предоставляет гораздо больше возможностей.

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

Важно понимать от имени какой учетной записи будет выполняться задача. В этом примере я указал для параметра /ru значение system, следовательно, для выполнения установки учетной записи компьютера будет необходим доступ на чтение в сетевую папку с дистрибутивом программы.

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

Листинг №3 – Установка программы с последующим удалением задания (Windows Batch)

WinRM – это реализация открытого стандарта DMTF (Distributed Management Task Force) от Microsoft, которая позволяет управлять системами с помощью веб-служб. Углубляться в устройство технологии я не буду, а лишь кратко опишу, что необходимо для её использования.

Версия WinRM 1 и выше входит в состав операционных систем, начиная с Windows Vista и Windows Server 2008. Для Windows XP и Windows Server 2003 можно установить WinRM в виде отдельного пакета (см. ссылки).

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

Чтобы winrm не спрашивал подтверждения, можно добавить к вызову ключ -quiet. Узнать информацию о более тонкой настройке можно посмотреть встроенную справку winrm:

Если на управляемом компьютере работает веб-сервер, WinRM никак ему не помешает, хоть и использует по умолчанию стандартные порты HTTP. Он будет перехватывать лишь подключения, предназначенные специально для него.

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

  • Настроить службу WinRM (Windows Remote Management) на автоматический запуск
  • Разумеется, еще вам будет необходимо разрешить подключения на соответствующие порты (по умолчанию 80) в брандмауэре Windows.

Независимо от того используется ли порт HTTP (80) или HTTPS (443) трафик, передаваемый WinRM шифруется (если конечно вы не отключите эту опцию). Для аутентификации по умолчанию используется протокол Kerberos.

Но хватит о настройках, лучше перейдем непосредственно к использованию. Хоть утилита winrm позволяет настраивать службу WinRM, а также выполнять, например, WMI запросы, нам более интересна другая – winrs. Буквы RS тут означают Remote Shell. WinRS работает очень похоже на PsExec хотя и использует технологию WinRM. Имя компьютера задаётся ключом -r, а после него следует команда, которую нужно выполнить. Вот несколько примеров:

Так как winrs и так использует cmd.exe в качестве удалённой оболчки, в командах можно легко обращаться к удалённым переменным окружения, или использовать другие встроенные команды cmd.exe:

Как и PsExec, утилита winrs позволяет открыть интерактивный сеанс на удалённом компьютере:

Эта функция аналогична telnet сессии, но использование winrs однозначно лучше telnet и даже PsExec, с точки зрения безопасности. Независимо от того используется ли порт HTTP (80) или HTTPS (443), трафик, передаваемый WinRM шифруется (если конечно вы не отключите эту опцию). Для аутентификации по умолчанию используется протокол Kerberos.

Windows PowerShell 2.0 Remoting

Хотя вторая версия Windows PowerShell на момент написания статьи находится еще в состоянии бета тестирования, о её возможностях в области удалённого выполнения команд определённо стоит рассказать уже сейчас. Попробовать его своими руками вы можете либо, загрузив предварительную версию (см. ссылки) либо в составе бета-версии Windows 7 или Windows Server 2008 R2.

Инфраструктура PowerShell Remoting основана на WinRM версии 2.0, и поэтому наследует все преимущества этой технологии, такие как шифрование передаваемых данных, и возможность работать по стандартным портам HTTP/HTTPS. Но благодаря богатым возможностям языка Windows PowerShell, и его способностям работы с объектами, мы получаем еще большие возможности. На данный момент пакет WinRM2.0 тоже находится в состоянии бета-тестирования, и доступен для загрузки только для систем Windows Vista и Windows 2008. В системы Windows 7 и Windows Server 2008R2 он будет встроен изначально, как и PowerShell 2.0.

Обновление: К моменту публикации статьи на ItBand.ru, финальные версии PowerShell 2.0 и WinRM 2.0 доступны уже для всех поддерживаемых платформ. В состав Windows Server 2008R2 и Windows 7 они уже включены как неотъемлемые компоненты системы, а для Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 все необходимые компоненты можно получить в виде пакета называемого Windows Management Framework.

Перед тем как воспользоваться всеми этими преимуществами, PowerShell Remoting необходимо активизировать, на управляющем, и управляемых компьютерах. Сделать это просто, запустив командлет (команду Windows PowerShell) Enable-PSRemoting. Причем если добавить ключ -Force то никаких подтверждений запрошено не будет. Этот командлет при необходимости вызовет winrs quickconfig, и создаст исключения в брандмауэре Windows, так что никаких дополнительных действий выполнять не нужно.

После этого вы сможете легко выполнять команды на других компьютерах используя командлет Invoke-Command (или его псевдоним icm):

Разумеется команду можно заранее поместить в переменную, а для параметра -ComputerName указать имена не одного, а сразу нескольких компьютеров. Следующая последовательность позволяет вывести версию файла Explorer.exe сразу с трех компьютеров.

Как из командной строки подключиться к другому компьютеру

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

Как из командной строки подключиться к другому компьютеру

Проксирование

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

Чаще всего такие проблемы люди решают с помощью утилит вроде cpau.exe (см. ссылки) которые создают файл с зашифрованным паролем административной учетной записи, позволяющий запускать определённую программу. Проблема, однако, в том, что хоть пароль и зашифрован, перед запуском программы утилите придётся его расшифровать. А соответственно пользователь может использовать утилиту повторяющую алгоритм расшифровки пароля, и узнать его, чтобы затем использовать для запуска других программ или получения дополнительных привилегий. Практически это конечно достаточно сложно для обычных пользователей, не обладающих специальными знаниями, но, тем не менее, вполне возможно. Еще раз уточню, это не беда конкретной утилиты, а проблема такого подхода вообще.

Еще может показаться, что для решения задачи подойдет параметр /savecred утилиты runas. Но тут есть даже две проблемы. Во-первых, как и вышеописанном случае, пароль сохраняется на компьютере пользователя, а, следовательно, может быть расшифрован, хотя в случае с runas для этого и понадобятся права локального администратора. Во-вторых, runas сохраняет учетные данные, не связывая их с конкретной командой, а, следовательно, пользователь сможет запустить с завышенными правами не только ту команду, доступ к которой вы хотели ему предоставить, но и любую другую.

Чтобы избежать этих проблем, но, тем не менее, разрешить выполнение конкретной команды, можно использовать методику, которая называется “проксированием”.

Работает она следующим образом. На компьютере постоянно работает сценарий с высокими привилегиями. Например, в нашем случае он будет запущен из-под учетной записи, обладающей правами администратора на файловом сервере. По сигналу пользователя он будет выполнять одну, заранее определённую команду. В этом примере – закрывать все файлы, открытые по сети.

Для организации этой системы мы поместим на сервере, например, в папке c:scripts командные файлы Server.cmd и Action.cmd.

Листинг №4 – Server. cmd (Windows Batch)

Server.cmd будет ждать знака от пользователя (создание файла в определенном месте), и получив его, запускать файл с командами – Action.cmd. Разумеется, в эту папку пользователи не должны иметь никакого доступа. Автоматический запуск Server.cmd при запуске компьютера можно организовать, просто создав соответствующую задачу в планировщике:

После параметра /ru указывается учетная запись, под которой будет выполняться сценарий (в нашем случае она обладает правами администратора на сервере), так как после параметра /rp пароль не указан – он будет запрошен при создании задачи. Параметр /sc позволяет указать момент запуска сценария, в нашем случае – при включении компьютера. Ну а /tn и /tr позволяют указать имя задачи, и исполняемый файл.

После этого достаточно будет поместить пользователю на рабочий стол файл Run.cmd.

Листинг №6 – Run. cmd (Windows Batch)

В сценарии Server.cmd используется утилита Sleep.exe, позволяющая сделать паузу в выполнении сценария на заданный в секундах промежуток времени. Она не входит в состав операционной системы, но её можно взять из набора Resource Kit Tools (см. ссылки) и просто скопировать на любой компьютер.

Ссылки

Ранее статья была опубликована в журнале Windows IT Pro RE в №4 за 2009 год.

Операционная система Windows предоставляет различные способы управления удалёнными системами. Telnet, RDP, VNC — это только некоторые из них. Но эти варианты обычно связаны с графическим интерфейсом пользователя. Если мы предпочитаем интерфейс командной строки, есть альтернатива под названием PsExec.

PsExec — это портативный инструмент от Microsoft, который позволяет удалённо запускать процессы с использованием учётных данных любого пользователя. Это немного похоже на программу удалённого доступа, но вместо того, чтобы управлять удаленным компьютером с помощью мыши, команды отправляются на компьютер через командную строку.

:/>  Добавление маршрутов в Windows 7 и управление таблицами сетевых маршрутов в Windows с помощью команды ROUTE

Официальное описание PsExec на сайте Microsoft: https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

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

Что такое PsExec и PsTools

На самом деле, PsExec это всего лишь один из инструментов из пакета PsTools. Программа PsExec используется чаще всего, поэтому обычно упоминается она, но в данной инструкции будут рассмотрены как примеры использования PsExec, так и примеры использования других инструментов из пакета PsTools.

  • PsExec используется для удалённого выполнения команд или получения шелла (оболочки) на удалённой системе
  • PsFile используется для вывода списка удалённо открытых файлов
  • PsGetSid используется для отображения идентификатора безопасности для удалённого компьютера или пользователя
  • PsInfo используется для получения подробной информации об удалённой системе
  • PsKill используется для остановки процесса в удалённой системе по имени или идентификатору
  • PsList используется для детального отображения процессов в удалённой системе
  • PsLoggedOn используется для вывода списка зарегистрированных пользователей в удалённых системах
  • PsLogList, используемый для отображения журналов событий на удалённых системах
  • PsPasswd используется для изменения заданного пароля пользователя в удалённой системе
  • PsPing используется для пинга из удалённой системы
  • PsServervice используется для перечисления и управления службами Windows в удалённой системе
  • PsShutdown используется для выключения, выхода из системы, приостановки и перезапуска удалённой системы Windows
  • PsSuspend используется для приостановки и возобновления процессов в удалённой системе Windows
  • PsUptime используется для отображения времени работы удалённой системы

Скачать PsExec (PsTools)

Как уже было сказано, PsExec является частью PsTools, который является частью Sysinternals от Microsoft. Набор программ PsTools распространяется бесплатно, ссылка на скачивание: https://download.sysinternals.com/files/PSTools.zip

Поскольку все утилиты имеют интерфейс командной строки, то если вы совсем не ориентируетесь в командной строке Windows (например, даже не знаете, как её открыть), то вначале ознакомьтесь со статьёй «Настройка рабочего окружения PowerShell в Windows и Linux».

Распакуйте скаченный архив, например, в папку PSTools.

Программа PsExec не требует установки. Но для запуска исполнимых файлов в командной строке нужно указать путь до них в файловой системе. Это можно сделать двумя способами:

2. Скопировать папку PSTools в директорию C:WindowsSystem32 тогда все файлы PSTools будут доступны следующим образом:

Выберите любой вариант, который вам удобнее.

Что нужно для PsExec

Для работы PsExec на удалённом компьютере не требуется никакого программного обеспечения — то есть на компьютере, которым вы будете управлять, не нужно устанавливать никакую клиентскую часть. Но нужно соблюдение некоторых условий, чтобы PsExec работала, поэтому если первая попытка не удалась, то проверьте следующие требования.

1. На обеих машинах, т.е. удалённом компьютере (которым будем управлять) и локальном компьютере (с которого будем управлять), должен быть включён общий доступ к файлам и принтерам. Для их включения смотрите статью «SMB: настройка общей сетевой папки в Windows».

На серверах Windows учётная запись «Администратор» включена по умолчанию.

3. Проверьте, что сетевой доступ к файлам и принтерам включён в файерволе. Для этого нажмите Win+r, введите там firewall.cpl.

Как из командной строки подключиться к другому компьютеру

Во вкладке «Разрешение взаимодействия с приложениями или компонентами в брандауэре защитника Windows»

Как из командной строки подключиться к другому компьютеру

найдите «Общий доступ к файлам и принтерам» и убедитесь, что стоит галочка в столбце «Частная» – если его там нет, то нажмите кнопку «Изменить параметры», поставьте галочку и нажмите ОК.

Как из командной строки подключиться к другому компьютеру

4. Убедитесь, что оба компьютера принадлежат к одной и той же рабочей группе (Workgroup).

5. Убедитесь, что вы правильно вводите пароль администратора удалённого компьютера.

Как включить учётную запись администратора

В моих тестах на последних Windows 10 и Windows Server 2019 команда PsExec работает только с учётной записью Администратор. Поэтому в этом разделе описано, как активировать пользователя Администратор, который по умолчанию присутствует в Windows, но в обычных, не серверных версиях, этот пользователь отключён.

Пользователя Администратор должен быть активен только на удалённом компьютере, где будут выполняться команды с помощью PsExec. На локальном компьютере учётная запись Администратор не требуется.

1. Нажмите клавиши Win+r, чтобы открыть окно запуска команды.

2. Введите lusrmgr.msc и нажмите Enter.

3. Откройте Пользователи.

4. Щёлкните правой кнопкой мыши Администратор и выберите Свойства.

5. Снимите флажок «Отключить учётную запись» и нажмите ОК.

6. Снова щёлкните правой кнопкой мыши учётную запись администратора и выберите «Задать пароль».

7. Укажите пароль для учётной записи администратора и нажмите «ОК».

Как запустить команду на удалённой системе

Основное использование команды PsExec — это просто запуск команды в удалённой системе. Чтобы запустить команду в удалённой системе, мы должны указать имя пользователя и пароль вместе с командой для запуска на удалённом компьютере.

Общий вид команды для запуска на удалённой системе:

.psexec \КОМПЬЮТЕР -u Администратор -p ПАРОЛЬ КОМАНДА АРГУМЕНТЫ КОМАНДЫ

В этой команде:

  • \КОМПЬЮТЕР — имя компьютера Windows или его IP адрес в локальной сети
  • -p ПАРОЛЬ — пароль пользователя Администратор. Эту опцию можно пропустить, тогда  команда запросит пароль для ввода
  • КОМАНДА — программа, которую нужно выполнить на удалённой системе. После команды могут идти её опции.

Пример выполнения команды ipconfig на удалённом компьютере \hackware-server от имени пользователя Администратор с паролем Aa1:

.psexec \HACKWARE-SERVER -u Администратор -p Aa1 ipconfig

Как мы видим, команда выполняется в удалённой системе без проблем.

Как из командной строки подключиться к другому компьютеру

У удалённого компьютера HACKWARE-SERVER IP адресом является 192.168.0.53, поэтому следующая команда эквивалентна предыдущей:

.psexec \192.168.0.53 -u Администратор -p Aa1 ipconfig

Обратите внимание, что в Windows (в противоположность Linux), регистр букв в именах компьютеров, командах и путях не имеет значения — можно использовать буквы любого регистра в любых местах.

Как в PsExec запустить команду с аргументами

Аргументы программы достаточно указать через пробел после самой команды:

.psexec \192.168.0.53 -u Администратор -p Aa1 tracert hackware.ru

Как перенаправить вывод команды PsExec

В этом примере выходные данные команды ipconfig сохраняются в файл с именем HACKWARE-SERVER_ifconfig.

Для вывода содержимого файла можно использовать команду Get-Content или её более короткий псевдоним cat:

Как из командной строки подключиться к другому компьютеру

Pass The Hash (использование хеша вместо пароля)

Указывать в командной строке пароль плохо для безопасности. А использование интерактивного ввода не позволяет использовать psexec.exe в скриптах. Выход из этой ситуации — использовать хеш пароля.

PsExec не может напрямую использовать хеш (хотя это ошибочно утверждается в некоторых инструкциях). Для применения хеша (Pass The Hash) с PsExec нужно использовать Windows Credential Editor или Mimikatz или Metasploit.

Пример выполнения Pass The Hash с PsExec. Вначале в Mimikatz:

Затем PsExec запускается без указания имени пользователя и пароля

PsExec.exe \192.168.1.2 cmd.exe

Примеры NTLM хешей и где их брать в статье «Как взломать пароль Windows».

Как копировать исполнимый файл с локального на удалённую систему

Выполнение команд в удалённой системе — очень полезная функция, но есть и другая полезная функция, которая облегчит работу системных администраторов и пентестеров. PsExec может использоваться для копирования исполнимых файлов из локальной системы в удалённую систему. Мы задействуем опцию -c для операции копирования. По завершении команд скопированный экземпляр будет удалён.

В этом примере мы скопируем cmd.exe. После завершения операции копирования в удалённой системе будет запущен cmd.exe.

.psexec \HACKWARE-SERVER -u Администратор -p Aa1 -c cmd.exe

Как мы видим, мы получаем оболочку cmd в удалённой системе.

С опцией -c можно указать любой файл.

Ещё один пример:

psexec \J3BCD011 -c “Z:ilesccleaner.exe” cmd /S

В последнем примере как использовать PsExec мы используем опцию -c для копирования программы ccleaner.exe на удалённый компьютер J3BCD011, а затем запускаем выгруженный файл с параметром /S, который говорит CCleaner включить тихую установку (не требует ввода пользователя). Добавление такого аргумента требует cmd.

Как запустить приложение с графическим интерфейсом на удалённой системе

Операционные системы Windows предоставляют по умолчанию графический интерфейс. PsExec можно использовать для открытия приложения с графическим интерфейсом на удалённой системе в указанной пользовательской консоли. Пользовательская консоль просто означает рабочий стол пользователя.

В этом примере мы запустим notepad.exe на удаленной системе. Пользователь удаленного системного администратора может взаимодействовать с этим блокнотом. То есть программа откроется на удалённой системе, как-либо взаимодействовать с ней на локальной системе не получится.

.psexec \HACKWARE-SERVER -u Администратор -p Aa1 -i notepad.exe

Поскольку используется опция -i, программа откроется в интерактивном режиме, что означает, что она фактически запустится на экране удалённого компьютера. Если бы -i была опущена в вышеупомянутой команде, то команда выполнялась бы в скрытом режиме, что означает не показывать какие-либо диалоговые окна или другие окна.

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

Как запустить команду как пользователь SYSTEM

При выполнении команд в удалённой системе привилегии и владелец процесса будут предоставлены пользователем. Если нам нужно изменить владельца удалённых команд на пользователя SYSTEM, мы указываем опцию -s.

В этом примере мы будем использовать regedit.exe:

.psexec \HACKWARE-SERVER -u Администратор -p Aa1 -i -s regedit.exe

Обратите внимание, что если на локальном компьютере нужно запустить программу с привилегиями SYSTEM (это намного более высокий привилегии, чем Администратор), то psexec также поможет. Например, чтобы получить доступ к разделам реестра Windows HKEY_LOCAL_MACHINESAMSAM достаточно выполнить команду:

psexec -s -i regedit.exe

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

До сих пор мы выполняли команды удалённо. После выполнения команды подключение к удалённой системе закрывалось. Это как сессионное соединение. С помощью PsExec мы можем получить удалённую оболочку или командную строку (по аналогии SSH в Linux). PsExec подключается удалённо и предоставляет нам оболочку MS-DOS. Чтобы получить удалённую оболочку, мы указываем команду cmd.exe в удалённой системе.

:/>  Пропала языковая панель Windows 7. Как восстановить?

Но начнём с того, что посмотрим информацию о текущей системе и пользователе:

Теперь создадим шелл до другого компьютера:

.psexec \HACKWARE-SERVER -u Администратор -p Aa1 cmd.exe

Во-первых, обратите внимание, что изменилось приглашение командной строки (вместо PowerShell она стало CMD).

Теперь просмотрим информацию о текущем пользователе и системе:

Как из командной строки подключиться к другому компьютеру

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

Локальным пользователем является hackware-mialmial, а после подключения пользователь стал hackware-serverадминистратор. Локальная система имеет версию 10.0.18363.720, а удалённая — версию 10.0.17763.1039.

Инструменты PsTools

До сих пор мы рассмотрели возможности утилиты PsExec, которая является самой популярной в пакете PsTools. Но в PsTools ещё много утилит для типичных действий, которые регулярно выполняют системные администраторы. Рассмотрим их далее.

Как вывести список открытых удалённо файлов с помощью PsFile

Команду PsFile можно использовать для просмотра или закрытия открытых файлов. Синтаксис очень похож на команду PSexec. В этом примере мы перечислим все открытые удалённо файлы.

.psfile \HACKWARE-SERVER -u Администратор -p Aa1

Как из командной строки подключиться к другому компьютеру

Как получить список SID на удалённой системе с PsGetSid

SID используется для более детальной идентификации пользователей Windows. Мы можем перечислить SID предоставленных пользователей с помощью команды PsGetSid, как показано ниже.

.psgetsid \HACKWARE-SERVER -u Администратор -p Aa1

Как из командной строки подключиться к другому компьютеру

Как получить информацию об удалённой системе с PSInfo

PsInfo — это инструмент, используемый для получения об удалённой системе информации, такой как время работы, версия, вариант Windows и т. д.

.psinfo \HACKWARE-SERVER -u Администратор -p Aa1

Как из командной строки подключиться к другому компьютеру

Следующая информация об удалённой системе предоставлена в PsInfo:

  • Uptime показывает, сколько дней и часов работает система
  • Kernel Version показывает ядро операционной системы
  • Product Type показывает версию операционной системы
  • Product Version версия продукта
  • Kernel Build Number номер сборки ядра
  • Registered Organization организация
  • Registered Owner владелец
  • IE Version показывает версию Internet Explorer
  • System Root показывает, где установлена операционная система
  • Processor показывает количество процессоров или потоков
  • Processor Speed скорость (частота) центрального процессора
  • Processor Type показывает подробную версию и имя процессора
  • Physical Memory количество физической памяти
  • Video Driver показывает имя загруженного драйвера

Как получить процессов в удалённой системе с PsList

Процессы, запущенные в удалённой системе, могут быть легко перечислены с помощью команды PsList.

.pslist \HACKWARE-SERVER -u Администратор -p Aa1

Как из командной строки подключиться к другому компьютеру

Вывод предоставит следующую информацию о процессах удалённой системы.

  • Name — это имя исполняемого файла
  • Pid — это ID процесса, который идентифицирует процессы (то есть отделяет друг от друга, является уникальной характеристикой процессов)
  • Pri является приоритетом, который влияет на производительность процесса в периоды высокой нагрузки
  • Thd — это номер потока
  • Hnd — это счётчик открытых файловых обработчиков
  • CPU Time — это общее использование ресурсов центрального процессора
  • Elapsed Time — это время от начала процесса

Как убить процесс в удалённой системе с PsKill

.pskill \HACKWARE-SERVER -u Администратор -p Aa1 2064

Как получить список журналов событий на удалённой системе с помощью PsLogList

Журналы удалённой системы могут быть легко выгружены в локальную систему с помощью команды PsLogList. Если мы используем эту команду без каких-либо дополнительных параметров, она выведет все журналы событий из удалённой системы, которые заполнят окно консоли. Так что для примера мы с опцией -m ограничим вывод последними 5 минутами журналов событий.

.psloglist \HACKWARE-SERVER -u Администратор -p Aa1 -m 5

Как из командной строки подключиться к другому компьютеру

Как изменить пароль на удалённой системе с помощью PsPasswd

Пароли пользователей удалённой системы можно легко изменить с помощью команды PsPasswd. В этом примере мы изменим пароль администратора на 123456Aa.

.pspasswd \HACKWARE-SERVER -u Администратор -p Aa1 Администратор 123456Aa

Пинг с PsPing

Ещё одним полезным инструментом является PsPing, который создает ICMP-пакеты для проверки связи. Команда в примере запускается на локальной системе (но может быть запущена и удалённо).

Как из командной строки подключиться к другому компьютеру

Для запуска пинга с удалённого компьютера:

.psping \HACKWARE-SERVER -u Администратор -p Aa1 google.com

Управление службами в удалённой системе с помощью PsService

Команда PsService используется для просмотра, запуска, остановки служб в удалённой системе.

Как вывести список служб

Мы можем перечислить удалённые сервисы с опцией query.

.psservice \HACKWARE-SERVER -u Администратор -p Aa1 query

Как из командной строки подключиться к другому компьютеру

Как запустить службу удалённо

Удалённый сервис может быть запущен с опцией start. В этом примере мы запустим сервис с именем mysql.

.psservice \HACKWARE-MIAL -u Администратор -p 1234 start mysql

Как из командной строки подключиться к другому компьютеру

После запуска сервиса будет выведена информация о нём.

Как остановить службу удалённо

В следующем примере мы остановим службу mysql:

.psservice \HACKWARE-MIAL -u Администратор -p 1234 stop mysql

Как из командной строки подключиться к другому компьютеру

Как выключить, перезагрузить, приостановить удалённую систему с PsShutdown

Удалённую систему можно отключить командой PsShutdown, как показано ниже.

.psshutdown \HACKWARE-SERVER -u Администратор -p Aa1 -k

Связанные статьи

PsExec — утилита для удаленного выполнения команд

Выполнение команд на удаленном компьютере — задача довольно распространенная. Это может быть необходимо для изменения настроек системы, установки или удаления программ и много еще для чего. Для решения подобных задач есть довольно много различных инструментов, начиная с серьезных программных комплексов типа System Center Configuration Manager и заканчивая скромными утилитами командной строки. Об одной из таких утилит и пойдет речь в этой статье.

Примечание.
Если вы с помощью ключа -c
указали программе, что необходимо скопировать исполняемые файлы на эту систему, они тоже скопируются в эту папку.

После завершения копирования PsExec устанавливает и запускает службу, используя API функции Windows для управления службами. Затем, после запуска PSEXESVC между ним и PsExec устанавливается соединение для передачи данных (ввода команд и получения результатов). По завершению работы PsExec останавливает службу и удаляет её с целевого компьютера.

Синтаксис PsExec выглядит следующим образом:

Имя пользователя и пароль можно и не задавать, тогда удаленный процесс запускается из под той же учетной записи, что и программа PsExec. Однако поскольку удаленный процесс является олицетворением, то он не будет иметь доступа к сетевым ресурсам удаленной системы. Если же задать имя пользователя, то удаленный процесс запустится из под указанной учетной записи и получит доступ к тем же сетевым ресурсам удаленной системы, что и данная учетная запись. Однако имейте ввиду, что пароль передается в удаленную систему открытым текстом.

В качестве примера очистим кэш dns на удаленном компьютере SRV1:

psexec \SRV1 ipconfig /flushdns

Команда будет запущена на компьютере SRV1 под вашими учетными данными. После завершения работы ipconfig весь текстовый вывод будет передан на ваш компьютер, а кроме того будет возвращён код выполнения команды (error code). В случае если команда выполнилась успешно, он будет равен 0.

Если нужно выполнить несколько команд, то лучше установить с удаленным компьютером интерактивный сеанс. Для этого вводим команду psexec \SRV1 cmd
. Теперь команды, вводимые на локальном компьютере будут выполняться на удаленном компьютере SRV1.

И еще один интересный способ использования утилиты PsExec. Если не указывать имя компьютера, то по умолчанию команда выполняется в локальной системе. Используя ключ -s
можно запускать программы под учетной записью системы. Например, запустим сеанс командной строки: psexec -s cmd
и затем командой whoami
проверим, под каким пользователем мы сейчас работаем. Эта возможность может пригодиться для отладки программ или доступа к скрытым разделам реестра SAM и SECURITY.

Ну и несколько слов о ключах программы. Все описывать не буду, расскажу о наиболее интересных:

Указанная программа копируется в удаленную систему для выполнения. Например:

psexec \SRV1 -c test.exe

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

psexec \SRV1 «c:program files est.exe»

Если вместе с ключом -c
использовать ключ -f
то даже если программа уже есть в удаленной системе, она будет перезаписана. А с ключом -v
она перезапишется только в том случае, если копируемая версия программы более новая чем та, что установлена в системе.

Работа программы в интерактивном режиме. По умолчанию PsExec выполняет команды в скрытом режиме, то есть на системе где выполняется команда, не выводятся никакие окна или диалоги. Однако есть возможность изменить это с помощью ключа -i
. После него можно указать номер сессии, в которой выводить окна, а можно и не указывать, тогда интерфейс будет отображен в консольной сессии.

Указывает, что не нужно ждать завершения приложения. В этом случае мы не получим выходных данных от консольной утилиты, но зато сможем не дожидаясь завершения предыдущей команды запускать следующие. Этот параметр следует использовать только при запуске неинтерактивных приложений.

Используется для запуска программы в режиме . Может потребоваться в операционных системах Windows Vista и выше для запуска некоторых программ, вносящих изменения в настройки системы (например regedit).

А с помощью этого ключа можно наоборот понизить полномочия. При запуске процесса пользователю вне зависимости от его принадлежности к группе администраторов предоставляются ограниченные права (права группы «администраторы» отменяются, и пользователю предоставляются только права, назначенные группе «пользователи»).

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

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

Я использую 2 средства удаленного выполнения консольных команд: PsExec и WinRM , у каждого из них есть свои преимущества.

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