PsTools — расширяем возможности командной строки Windows, часть 1

command-prompt-defoultКлассическая командная строка Windows представляет довольно ограниченный объем возможностей в сравнении со своим аналогом в Linux. Этот недостаток можно исправить и без установки альтернативных консолей.

В 1999 году в недрах компании Winternals Software LP, возглавляемой небезызвестным Марком Руссиновичем, родилась небольшая утилита PsList, позволяющая просматривать подробную информацию о процессах. С тех пор появился целый ряд программ, объединенных под именем PsTools. Рассмотрим самые интересные из них.

Официальная страница проекта приводит нам список программ с описанием их функций. Там же можно скачать весь набор PsTools целиком.

Программы не требуют установки. Достаточно положить их в один каталог с приложением командной строки, а именно, %WINDIR%\System32.

Рассмотрим самые интересные приложения из пакета PsTools.

PsExec позволяет выполнять приложения на удаленном компьютере из родной командной строки. Синтаксис команды выглядит следующим образом.

psexec.exe [\\computer[,computer2[,…] | @file][-u user [-p psswd]][-n s][-l][-s|-e][-i][-c [-f|-v]][-w directory][-d][-priority][-a n,n,…] program [arguments]

computer — имя или IP-адрес компьютера. Если параметр не указан, команда запустится на локальном компьютере. Если используется шаблон \\*,  то PsExec выполнит приложение на всех компьютерах домена;

@file — файл, содержащий список компьютеров, на котором будут выполняться команды;

-u — имя пользователя. Если не указано, то будет выполнено из-под текущего пользователя;

-p — пароль. Если не указан, то будет запрошен при выполнении;

-n — задержка подключения к удаленным компьютерам в секундах;

-l — при запуске процесса пользователю предоставляются ограниченные права (аналогичные группе «пользователи»);

-s — выполнить приложение с локальными системными правами (Local system account);

-e — использовать указанный профиль пользователя.

-i — разрешает программе взаимодействовать с рабочим столом на удаленном компьютере. Если параметр не указан, то выполнение программы происходит незаметно для пользователя удаленного компьютера;

-c — копировать программу на удаленный компьютер перед запуском. Если параметр не указан, то программа для выполнения должна находиться на удаленном компьютере в одном из каталогов, указанных в настройках системной переменной Path;

-f — при указании данного параметра, копирование будет выполнено даже при наличии исполняемого файла на удаленном компьютере;

-v — копирование будет выполнено только, если исполняемый файл имеет более свежую версию;

-w — позволяет указать рабочий каталог для удаленного процесса;

-d — не ждать завершения удаленного процесса;

-priority — приоритет для удаленного процесса. Может принимать значения: -low, -belownormal, -abovenormal, -high, -realtime;

-a — позволяет указать процессоры, которые будут выполнять приложение. Например, для CPU 1 и CPU 3 значение будет иметь вид: -a 1,3;

program — имя исполняемого на удаленной системе приложения;

arguments — аргументы для удаленного приложения. Пути файлов следует задавать относительно удаленного компьютера. Имена файлов или папок, содержащие пробелы, нужно заключать в двойные кавычки. Например, «C:\Program Files\User Folder\Programm.exe».

Приведем примеры использования PsExec.

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

psexec.exe \\xxx.xxx.xxx.xxx cmd.exe

в данном случае,  вместо xxx.xxx.xxx.xxx — ip-адрес удаленной машины. Вместо него можно использовать и имя компьютера.

psexec.exe \\CompName cmd.exe

Если требуется ввести логин и пароль:

psexec.exe \\CompName -u user -p password cmd.exe

Приведем более сложный пример. Допустим, у нас есть два удаленных компьютера CompName1 и CompName2. Нам надо скопировать данные каталога primer с диска C CompName1 на диск C CompName2.

Для начала смонтируем диск C компьютера CompName2.

psexec.exe \\CompName1 -u user -p password net use X: \\CompName2\C

Теперь непосредственно копирование.

psexec.exe \\CompName1 -u user -p password xcopy C:\primer\*.* X:\primer\*.*

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

Продолжение следует…

Комментарии: 7 к “PsTools — расширяем возможности командной строки Windows, часть 1”

  1. При выполнении команды выдает ошибку:
    C:\Windows\system32>psexec \\192.168.1.3 cmd.exe

    Couldn’t access 192.168.1.3:
    ╬Єърчрэю т фюёЄєях.

  2. При выполнении команды выдает ошибку:
    C:\Windows\system32>psexec \\userpc -s -u domain\xxx -p xxx cmd.exe

    Couldn’t access userpc:
    ╬Єърчрэю т фюёЄєях.

    Но если предварительно запустить командную строку от имени domain\xxx, то команда выполняется успешно.
    в чем может быть причина отказа доступа без предварительного запуска cmd от имени domain\xxx?

      1. Could not start PSEXESVC service on
        ╬Єърчрэю т фюёЄєях.

        не работает. приходится также предварительно запускать cmd от имени пользователя

        1. Бывает, что PsExec пытается запустить PSEXESVC от локальных учётных данных, даже если в команде прямо прописаны другие учётные данные. Попробуйте:
          psexec -u domain\xxx -p xxx -s \\userpc cmd.exe или psexec -u domain\xxx -p xxx \\userpc -s cmd.exe

Добавить комментарий

Ваш адрес email не будет опубликован.