2

Я хочу написать быстрый скрипт для отправки одного файла (который я часто меняю) со своей рабочей станции (ОС Windows7) на удаленный сервер (Windows Server 2012) через клиент RDP.

В идеале я хочу создать экземпляр процесса rdpclip.exe с некоторыми аргументами. Что-то вроде:rdpclip.exe -f [fileToCopyFromLocalToRemote] но, насколько мне известно (и краткий поиск в Google), такого эквивалента нет.

Кроме того, я не ищу каких-либо сторонних инструментов для этого!

5 ответов5

4

Если вы намереваетесь оставаться подключенным к сеансу RDP, вы можете подключить диск к вашему подключению, который может сделать ваш локальный диск доступным для удаленного компьютера. Это на вкладке « Локальные ресурсы » удаленного рабочего стола под кнопкой « Подробнее ...» .

Как только это будет включено, вы можете сделать запланированное задание для копирования файлов. Вы можете получить доступ к локальным дискам через специальное имя общего ресурса \\tsclient\c или любой другой диск, к которому вы пытаетесь обратиться, как описано в этой статье TechNet. Поэтому пример сценария, который вы запускаете на удаленном компьютере, может выглядеть примерно так:

IF EXIST "\\tsclient\c\Mydir\MyFile" copy /Y "\\tsclient\c\Mydir\MyFile" "C:\Syncrhonized\MyDir\MyFile"

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

1

Вы можете использовать PowerShell, чтобы поместить файл в буфер обмена:

Add-Type -AssemblyName System.Windows.Forms
$f = New-Object System.Collections.Specialized.StringCollection
$f.Add("D:\tmp\mypic1.bmp")
[System.Windows.Forms.Clipboard]::SetFileDropList($f)
1

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

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

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

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

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

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

1

Согласно моим исследованиям, rdpclip.exe не принимает аргументы командной строки. Использовать его для программного копирования файлов, по-видимому, не предполагается.

Поскольку Windows Vista robocopy является частью каждой установки Windows. Я не знаю, как вы хотите использовать rdpclip.exe для передачи файла на удаленный хост. Но моей первой мыслью было смонтировать netshare, использовать robocopy для передачи файла и размонтировать netshare. В скрипте это будет выглядеть так:

net use \\Server\Sharename /USER:[username] [passwort]
robocopy [Source] [Destination]
net use \\Servername\Sharename /del
0

Можно ли скопировать файл с компьютера под управлением Windows 7 (CTRL + C) и вставить его в сеанс удаленного рабочего стола (CTRL + V)?

Я могу сделать это со многими файлами, но обычно это не удается для больших файлов, таких как 4 ГБ +.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .