Копирование файлов с помощью psexec
Копирует один или несколько файлов из одного расположения в другое.
В консоли восстановления можно также использовать команду Копировать с другими параметрами. дополнительные сведения о консоли восстановления см. в разделе Windows среды восстановления (Windows RE).
Примеры
Чтобы скопировать файл с именем memo.doc для letter.doc на текущем диске и убедиться, что символ конца файла (Ctrl + Z) находится в конце скопированного файла, введите:
Чтобы скопировать файл с именем перебора. Typ из текущего диска и каталога в существующий каталог с именем птиц , расположенный на диске C, введите:
Если каталог птиц не существует, файл Renamed . Typ копируется в файл с именем птиц , расположенный в корневом каталоге на диске C.
Чтобы объединить Mar89. rpt, Apr89. rptи May89. rpt, расположенные в текущем каталоге, и поместить их в файл с именем Report (также в текущем каталоге), введите:
При объединении файлов команда копирования помечает конечный файл текущими датой и временем. Если параметр Destinationне указан, файлы объединяются и сохраняются под именем первого файла в списке.
Чтобы объединить все файлы в отчете, если файл с именем Report уже существует, введите:
Чтобы объединить все файлы в текущем каталоге, имеющие расширение имени файла .txt, в один файл с именем Combined.doc, введите:
Чтобы объединить несколько двоичных файлов в один файл, используйте подстановочные знаки, включите /b. это не доWindows расинтерпретации CTRL + Z как символа конца файла. Например, введите:
При объединении двоичных файлов результирующий файл может оказаться непригодным для использования из-за внутреннего форматирования.
- Сочетание каждого файла с расширением .txt с соответствующим ref-файлом создает файл с тем же именем, но с расширением .doc. Команда Copy объединяет file1.txt с параметром file1. ref в форму file1.doc, а затем команда объединяет file2.txt с file2. ref в форму file2.docи т. д. Например, введите:
Чтобы объединить все файлы с расширением .txt, а затем объединить все файлы с расширением REF в один файл с именем Combined.doc, введите:
I want to run a script I called "systemInfo.vbs" that outputs to a logfile the system name and service pack.
In command prompt I am doing "PsExec.exe \REMOTECOMPUTER -c systemInfo.vbs".
I am running this from a directory on my local system that has ONLY PsExec.exe and systemInfo.vbs
I get the error
PsExec could not start systemInfo.vbs on REMOTESERVER: "The system cannot find the file specified.
Any idea why this may be? I thought I could do this to run a remote script as if it is on the remote server?
Using PsExec
See the July 2004 issue of Windows IT Pro Magazine for Mark's article that covers advanced usage of PsExec.
Usage:
Parameter | Description |
---|---|
-a | Separate processors on which the application can run with commas where 1 is the lowest numbered CPU. For example, to run the application on CPU 2 and CPU 4, enter: "-a 2,4" |
-c | Copy the specified executable to the remote system for execution. If you omit this option the application must be in the system path on the remote system. |
-d | Don't wait for process to terminate (non-interactive). |
-e | Does not load the specified account’s profile. |
-f | Copy the specified program even if the file already exists on the remote system. |
-i | Run the program so that it interacts with the desktop of the specified session on the remote system. If no session is specified the process runs in the console session. This flag is required when attempting to run console applications interactively (with redirected standard IO). |
-h | If the target system is Vista or higher, has the process run with the account's elevated token, if available. |
-l | Run process as limited user (strips the Administrators group and allows only privileges assigned to the Users group). On Windows Vista the process runs with Low Integrity. |
-n | Specifies timeout in seconds connecting to remote computers. |
-p | Specifies optional password for user name. If you omit this you will be prompted to enter a hidden password. |
-r | Specifies the name of the remote service to create or interact with. |
-s | Run the remote process in the System account. |
-u | Specifies optional user name for login to remote computer. |
-v | Copy the specified file only if it has a higher version number or is newer on than the one on the remote system. |
-w | Set the working directory of the process (relative to remote computer). |
-x | Display the UI on the Winlogon secure desktop (local system only). |
-priority | Specifies -low, -belownormal, -abovenormal, -high or -realtime to run the process at a different priority. Use -background to run at low memory and I/O priority on Vista. |
computer | Direct PsExec to run the application on the remote computer or computers specified. If you omit the computer name, PsExec runs the application on the local system, and if you specify a wildcard (\\*), PsExec runs the command on all computers in the current domain. |
@file | PsExec will execute the command on each of the computers listed in the file. |
cmd | Name of application to execute. |
arguments | Arguments to pass (note that file paths must be absolute paths on the target system). |
-accepteula | This flag suppresses the display of the license dialog. |
You can enclose applications that have spaces in their name with quotation marks e.g.
Input is only passed to the remote system when you press the Enter key. Typing Ctrl-C terminates the remote process.
If you omit a user name, the process will run in the context of your account on the remote system, but will not have access to network resources (because it is impersonating). Specify a valid user name in the Domain\User syntax if the remote process requires access to network resources or to run in a different account. Note that the password and command are encrypted in transit to the remote system.
Error codes returned by PsExec are specific to the applications you execute, not PsExec.
Installation
Just copy PsExec onto your executable path. Typing "psexec" displays its usage syntax.
Introduction
Utilities like Telnet and remote control programs like Symantec's PC Anywhere let you execute programs on remote systems, but they can be a pain to set up and require that you install client software on the remote systems that you wish to access. PsExec is a light-weight telnet-replacement that lets you execute processes on other systems, complete with full interactivity for console applications, without having to manually install client software. PsExec's most powerful uses include launching interactive command-prompts on remote systems and remote-enabling tools like IpConfig that otherwise do not have the ability to show information about remote systems.
Note: some anti-virus scanners report that one or more of the tools are infected with a "remote admin" virus. None of the PsTools contain viruses, but they have been used by viruses, which is why they trigger virus notifications.
Использование программы PsExec
См. статью журнала Windows ИТ-Pro журнала Mark за июль 2004 года, в статье о расширенном использовании PsExec.
Использование:
Параметр | Описание |
---|---|
-a | Отдельные процессоры, на которых приложение может работать с запятыми, где 1 — самый низкий нумерованный ЦП. Например, чтобы запустить приложение на ЦП 2 и ЦП 4, введите "-a2,4" |
-c | Скопируйте указанный исполняемый файл в удаленную систему для выполнения. Если этот параметр опущен, приложение должно находиться в системном пути в удаленной системе. |
-d | Не ожидайте завершения процесса (неинтерактивно). |
-e | Не загружает профиль указанной учетной записи. |
-f | Скопируйте указанную программу, даже если файл уже существует в удаленной системе. |
-i | Запустите программу, чтобы она взаимодействовала с рабочим столом указанного сеанса в удаленной системе. Если сеанс не указан, процесс выполняется в сеансе консоли. Этот флаг необходим при попытке запустить консольные приложения в интерактивном режиме (с перенаправленным стандартным вводом-выводом). |
-h | Если целевая система является Vista или выше, процесс выполняется с маркером с повышенными привилегиями учетной записи, если он доступен. |
-l | Выполнение процесса от имени ограниченного пользователя (удаляет группу "Администраторы" и разрешает только привилегии, назначенные группе "Пользователи"). В Windows Vista процесс выполняется с низкой целостностью. |
-n | Указывает время ожидания в секундах, подключающихся к удаленным компьютерам. |
-p | Указывает необязательный пароль для имени пользователя. Если опустить это, вам будет предложено ввести скрытый пароль. |
-r | Указывает имя удаленной службы для создания или взаимодействия с ней. |
-s | Запустите удаленный процесс в системной учетной записи. |
-u | Указывает необязательное имя пользователя для входа на удаленный компьютер. |
-v | Скопируйте указанный файл только в том случае, если он имеет более высокий номер версии или более поздней версии, чем в удаленной системе. |
-w | Задайте рабочий каталог процесса (относительно удаленного компьютера). |
-x | Отображение пользовательского интерфейса на защищенном рабочем столе Winlogon (только в локальной системе). |
-priority | Указывает -low, -belownormal, -abovenormal, -high или -realtime для выполнения процесса с другим приоритетом. Используйте -background для выполнения с низким уровнем памяти и приоритета ввода-вывода в Vista. |
Компьютере | Direct PsExec для запуска приложения на удаленном компьютере или на указанных компьютерах. Если не указать имя компьютера, PsExec запускает приложение в локальной системе, а если указать подстановочный знак (\\*), PsExec выполняет команду на всех компьютерах в текущем домене. |
@file | PsExec выполнит команду на каждом из компьютеров, перечисленных в файле. |
cmd | Имя выполняемого приложения. |
Аргументы | Аргументы для передачи (обратите внимание, что пути к файлам должны быть абсолютными путями в целевой системе). |
-accepteula | Этот флаг подавляет отображение диалогового окна лицензии. |
Вы можете заключить приложения, имеющие пробелы в имени, с кавычками, например.
Если не указать имя пользователя, процесс будет выполняться в контексте учетной записи в удаленной системе, но не будет иметь доступа к сетевым ресурсам (так как это олицетворение). Укажите допустимое имя пользователя в синтаксисе Domain\User , если удаленному процессу требуется доступ к сетевым ресурсам или запуск в другой учетной записи. Обратите внимание, что пароль и команда шифруются при передаче в удаленную систему.
Коды ошибок, возвращаемые PsExec, относятся к выполняемым приложениям, а не PsExec.
Установка
Просто скопируйте PsExec в исполняемый путь. При вводе psexec отображается синтаксис использования.
2 Answers 2
You need to give the path to your script either on the remote pc or through a UNC path on a share on your pc or a netsworkdrive. So if the script has a copy on the remote c:\
or if it is on the share \\mypc\shared
Also you need to make sure you have administrator rights on the pc where you start the script and depending on what your script does possibly on the remote pc as well.
never used that option and in case of trouble i would surely omit it and try it like i suggested, your error message clearly indicates there's a problem with that option but first try giving the full path to the script on your local system, since psexec is executed with administrative rights it could be it loses the context
For anyone who might encounter this in the future, the -c flag does allow you to copy over a file for execution; the documentation didn't specify, but you need to follow it with the path on your local machine to the binary you want copied and executed. (I have submitted a pull request to the documentation.)
For example, this could be used to add the "Blend for Visual Studio SDK for .NET" to a remote installation of Visual Studio 2017 Professional by copying the web installer (named vs_professional.exe ) to that machine ( \\TargetMachine ) with credentials, (note the DOMAIN is only if you're using a domain instead of local user), and executing it with appropriate parameters.
Поисковики всякую фигню выдают на запрос. Разобравшись самостоятельно,думаю, что кому-нибудь может пригодиться мой опыт.
Итак, как скопировать файл на машины домена или сети?
• Можно написать командный файл (*.bat, *.cmd или кто что умеет) и засунуть в стартовые скрипты в групповой политике. Так делали до появления GroupPolicyPreferences.
• А теперь, для счастливых обладателей доменов на Windows Server 2008 и выше, всё становится интереснее и проще:
GPMC.msc -> выбираете нужный вам раздел (компьютера или пользователя) -> Настройка (в англ - Preferences) -> Конфигурация Windows -> Файлы -> ПраваяКнопкаМыши (ПКМ) -> создать -> файл -> читаем про параметры в справке (значения параметров отличаются в разных разделах GPP) -> настраиваем как вам надо.
Чтобы файлы попали на те компы, на которых их надо заменить, удобно воспользоваться "Нацеливанием на уровень элемента" (в общих параметрах при настройке "файла"). Я выбрал Создать элемент - Соответствие файлов. Там выбрал существование определённой папки.
Если у вас не срабатывает созданное предпочтение, то обратите внимание на права шары, в которой находится файл для копирования. Для успешного применения нужно, чтобы учётка system имела права на шару (кстати, наверное, это актуально только для ветки ГП Конфигурация компьютера - не тестил). Я просто кинул нужный файл в NETLOGON.
• Для тех же, кто хочет проделать подобную задачу в сети без домена подойдёт первый вариант, но определённым образом.
Во-первых нужно, чтобы на всех целевых компах были одинаковые учётки с одинаковым паролем с правами администратора. Во-вторых на компе админа (вашем) должны быть скачаны утилиты от Sysinternals - Pstools. С помощью Psexec запускаем на удаленных компах батник с командой копировать файл с необходимыми параметрами.
Пример комманды для Psexec:
c:\pstools\psexec.exe @\\PC-programmist\shara\list_of_computers.txt -u имя админа -p пароль админа \\PC-programmist\shara\copy_file.bat
Пример содержимого copy_file.bat:
copy \\PC-programmist\shara\client_network.ini "c:\program files\ProgramFolder\client_network.ini" /Y
Сложности могут возникнуть при кириллических именах папок или файлов. Если уж никак не обойтись без кириллицы, правильная кодировка для батника - dos-866.
dikocvet (Monday, 05 August 2013 15:22)
Thanks, I'll try that.
Роман (Tuesday, 03 July 2018 09:22)
Добрый день, а если требуется скопировать файл всем пользователям в папку профиля? а у всех профиля начинаются одинаковые цифры. к примеру - C:\Users\1234-00-370\AppData\Roaming , 1234-00-371, 1234-00-372.
Введение
Такие служебные программы, как Telnet и программы удаленного управления, такие как компьютер Symantec anywhere, позволяют выполнять программы в удаленных системах, но они могут быть болью в настройке и требовать установки клиентского программного обеспечения на удаленных системах, к которым вы хотите получить доступ. PsExec — это облегченная замена telnet, которая позволяет выполнять процессы в других системах, в комплекте с полной интерактивностью для консольных приложений без необходимости устанавливать клиентское программное обеспечение вручную. Наиболее эффективные варианты использования PsExec включают запуск интерактивных командных строк в удаленных системах и средства удаленного включения, такие как IpConfig, которые в противном случае не могут отображать сведения об удаленных системах.
Примечание. Некоторые антивирусные сканеры сообщают, что один или несколько средств заражены вирусом "удаленный администратор". Ни один из PsTools не содержит вирусов, но они использовались вирусами, поэтому они активируют уведомления о вирусах.
Синтаксис
Примеры
В этой статье я писал о том, как Работает PsExec и дает советы по его использованию:
Следующая команда запускает интерактивную командную строку в \\marklap :
Эта команда выполняет IpConfig в удаленной системе с параметром /all и отображает полученные выходные данные локально:
Эта команда копирует программу test.exe в удаленную систему и выполняет ее в интерактивном режиме:
Укажите полный путь к программе, которая уже установлена в удаленной системе, если ее нет в пути к системе:
Запустите Regedit в интерактивном режиме в системной учетной записи, чтобы просмотреть содержимое ключей SAM и SECURITY::
Для запуска Internet Explorer с ограниченными правами пользователя используйте следующую команду:
PSTools
PsExec является частью растущего набора средств командной строки Sysinternals, которые помогают администрированию локальных и удаленных систем с именем PsTools.
Download PsTools (3.5 MB)
Параметры
Параметр | Описание |
---|---|
/d | Позволяет сохранить копируемые зашифрованные файлы в виде расшифрованных файлов в месте назначения. |
/v | Проверяет, правильно ли записаны новые файлы. |
/n | Использует короткое имя файла (если доступно) при копировании файла с именем длиннее восьми символов или с расширением имени файла длиннее трех символов. |
/y | Подавляет запрос на подтверждение перезаписи существующего целевого файла. |
/-и | Выводит запрос на подтверждение перезаписи существующего целевого файла. |
/z | Копирует сетевые файлы в перезапускаемый режим. |
/a | Указывает текстовый файл ASCII. |
/b | Указывает на двоичный файл. |
Обязательный элемент. Указывает расположение, из которого необходимо скопировать файл или набор файлов. Источник может состоять из буквы диска и двоеточия, имени каталога, имени файла или их сочетания. | |
Обязательный. Указывает расположение, в которое необходимо скопировать файл или набор файлов. Назначение может состоять из буквы диска и двоеточия, имени каталога, имени файла или их сочетания. | |
/? | Отображение справки в командной строке. |
Комментарии
Можно скопировать текстовый файл ASCII, в котором используется символ конца файла (CTRL + Z), чтобы указать конец файла.
Если параметр /a предшествует или следует за списком файлов в командной строке, он применяется ко всем файлам, перечисленным до тех пор, пока не встретится копия. В этом случае /b применяется к файлу, предшествующему /b.
Результат использования параметра/a зависит от его позиции в строке командной строки:-if /a после Source, команда Copy обрабатывает файл как ASCII-файл и копирует данные, предшествующие первому символу конца файла (Ctrl + Z). - Если после параметраDestination указано значение, команда Copy добавляет символ конца файла (Ctrl + Z) в качестве последнего символа файла.
Если /b указывает интерпретатору команд считывать число байтов, указанное размером файла в каталоге. /b — это значение по умолчанию для Copy, если только копирование не объединяет файлы.
Если /b предшествует или следует за списком файлов в командной строке, он применяется ко всем файлам в списке до тех пор , пока не встретится параметр /a. В этом случае /a применяется к файлу, предшествующему /a.
Действие /b зависит от его позиции в командной строке:-if /b следует за источником, команда Copy копирует весь файл, включая любой символ конца файла (Ctrl + Z). -If /b следует за назначением, команда Copy не добавляет символ конца файла (Ctrl + Z).
Если в переменной среды копикмд предустановлен параметр /y , его можно переопределить с помощью /-и в командной строке. По умолчанию при замене этого параметра выводится запрос, если команда Copy не выполняется в пакетном скрипте.
Чтобы добавить файлы, укажите один файл для назначения, но несколько файлов для источника (используйте символы-шаблоны или формат файла file1 file2 файл3 ).
Если во время фазы копирования теряется соединение (например, если сервер переходит в автономный режим), можно использовать копию/z , чтобы возобновить подключение после восстановления подключения. Параметр /z также отображает процент завершения операции копирования для каждого файла.
Имя устройства можно заменить одним или несколькими экземплярами источника или назначения.
Если назначением является устройство (например, COM1 или LPT1), параметр /b копирует данные на устройство в двоичном режиме. В двоичном режиме copy/b копирует все символы (включая такие специальные символы, как CTRL + C, CTRL + S, CTRL + Z и ввод) на устройство в виде данных. Однако если параметр /bне указан, данные копируются на устройство в режиме ASCII. В режиме ASCII специальные символы могут привести к объединению файлов во время процесса копирования.
Если в источникеуказано несколько файлов, команда Copy объединяет их в один файл, используя имя файла, указанное в поле назначение. Команда Copy предполагает, что Объединенные файлы являются файлами ASCII, если не используется параметр /b .
Чтобы скопировать файлы длиной 0 байт или скопировать все файлы и подкаталоги каталога, используйте команду xcopy.
Чтобы назначить текущее время и дату файлу без изменения файла, используйте следующий синтаксис:
Где запятые указывают, что конечный параметр был намеренно оставлен.
Examples
This article I wrote describes how PsExec works and gives tips on how to use it:
The following command launches an interactive command prompt on \\marklap :
This command executes IpConfig on the remote system with the /all switch, and displays the resulting output locally:
This command copies the program test.exe to the remote system and executes it interactively:
Specify the full path to a program that is already installed on a remote system if its not on the system's path:
Run Regedit interactively in the System account to view the contents of the SAM and SECURITY keys::
To run Internet Explorer as with limited-user privileges use this command:
Download PsTools (3.5 MB)
PSTools
PsExec is part of a growing kit of Sysinternals command-line tools that aid in the administration of local and remote systems named PsTools.
Читайте также: