По какому протоколу копируются файлы в проводнике

Обновлено: 06.07.2024

С вами канал " Techno-Geek " и в этой статье хочу поделится с вами информацией о том, как, скопировать большие файлы в неустойчивой сети. И начать хочется с того, что на днях столкнулся с такой проблемой - нужно передать файл в 6 гигабайт внутри одной сети на устройство доступ к которому есть только через беспроводное сетевое подключение и ни как иначе.

Суть проблемы:

При обычном копировании через CTRL+C - CTRL+V копирование файла доходило до пределов в 38% - 96%, сеть разрывалась и файл полностью не передавался, а стандартные методы Windows не позволяют делать блочное копирование и не поддерживают докачку файла, соответственно файл всегда получался повреждённым и был не пригоден для его открытия на другом устройстве.

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

Поиск путей решения

Естественно первым делом я пошёл в поисковик и начал искать программы которые поддерживают процесс копирования файлов с докачкой и удивился тому, как часто у пользователей возникает такой вопрос (скриншот приложу ниже), но ответа я так и не нашел, все решения на которые я натыкался это советы программ для копирования по типу "TeraCopy" или "KillCopy", но они мне не помогли, так как по сути эти программы ни чем не отличаются от стандартных средств Windows и при разрыве сети они также выдают ошибку передачи файла.

Скриншот страницы по запросу "Копирование файлов с докачкой" Скриншот страницы по запросу "Копирование файлов с докачкой"

Выход из ситуации

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

И тут ко мне пришла простая, но в то же время рабочая идея - использовать для передачи файла Торрент-клиент. Всё что мне нужно сделать - это создать торрент файл, для этого нужно зайти в меню "Файл" - "Создать новый торрент. ", выбрать файл и создать для него торрент файл.

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

Для того, чтобы осуществить такую операцию мне нужно было, чтобы мой торрент файл передавался внутри сети без использования торрент-трекера, а только по средствам сети через торрент-клиент. Для этого нужно задействовать технологию DHT (Distributed Hash Table), которая включается в настройках торрент-клиента и обеспечивает передачу файлов внутри сети и в обход торрент-трекеров.

Что дальше?

Итак я создал торрент файл, после чего он автоматически добавился в программу uTorrent, которая является моим торрент-клиентом, и стал на раздачу, но мне это не нужно, так как я не раздаю файл кому-то, а просто хочу копировать его с поддержкой докачки, поэтому мне нужно было удалить файл из торрент-клиента. Для этого нужно нажать по нему правой кнопкой мышки и выбрать "Удалить выборочно" - "Только торрент файл"

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

date

27.04.2020

directory

PowerShell, Windows 10, Windows Server 2012 R2

comments

комментария 24

Протокол BITS

BITS или Background Intelligent Transfer service — (Фоновая интеллектуальная служба передачи) – это служба Windows, которая используется для передачи файлов между системами. С помощью протокола BITS можно передавать как скачивать, так и закачивать файлы. Именно по этому протоколу компьютеры скачивают файлы с серверов при выполнении автоматического обновлении Windows (в т.ч. при скачивании обновлений со WSUS сервера), при получении программ с SCCM точек распространения и т.д.

Преимущества протокола BITS:

  • BITS — интеллектуальный протокол, который при работе способен регулировать используемую полосу канала связи, чтобы не оказывать влияния на другие сетевые приложения и сервисы. BITS может использовать только незанятую полосу пропускания канала и динамически изменять скорость передачи данных в процессе работы (если другие приложения увеличат нагрузку на сеть, BITS может уменьшить скорость передачи данных по сети);
  • Загрузка файла может идти в фоновом режиме, незаметно для пользователя;
  • Задание BITS в режиме докачки будет автоматически продолжено даже в случае обрыва канали связи между компьютером и клиентом, или после перезагрузки компьютера;
  • В любой момент вы можете приостановить или возобновить загрузку по BITS без потери данных;

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

Таким образом, BITS является оптимальным протоколом для передачи больших файлов по медленным и нестабильным сетям (спутниковый канал, GPRS соединение и т.д.).

BITS: требования к ОС и версии PowerShell

Протокол BITS впервые был представлен еще в Windows XP, для управления заданиями BITS в которой можно было использовать утилиту bitsadmin.exe. Утилита все еще поддерживается, однако считается устаревшей. Для управления заданиями BITS предпочтительно использовать специальные командлеты PowerShell.

Для работы по рассматриваемому сценарию нам потребуется ОС не ниже Windows Vista или Windows Server 2008, и PowerShell не ниже версии 2.0. Современные версии Windows 10 и Windows Server 2016 / 2012 R2 протокол BITS полностью поддерживают.

Совет. Возможно использовать и Windows Server 2003. В этом случае придется установить специальное обновлений KB 923845 и PowerShell V2.0.

Поддержка BITS требуется как на стороне клиента, так и сервера.

Как скачать файл по протоколу BITS с помощью PowerShell

Предполагается, что к данному URL адресу разрешен анонимный доступ (в дальнейшем мы рассмотрим доступ к URL адресу с аутентификацией).

В первую очередь загрузите в сессию PowerShell модуль поддержки BITS:

После загрузки модуля, вы можете вывести список всех доступных команд модуля BitsTransfer:

powershell get command модуль BITS

Как вы видите, доступно всего 8 командлетов:

  • Add-BitsFile
  • Complete-BitsTransfer
  • Get-BitsTransfer
  • Remove-BitsTransfer
  • Resume-BitsTransfer
  • Set-BitsTransfer
  • Start-BitsTransfer
  • Suspend-BitsTransfer

Синхронная передача файлов между компьютерами с помощью BITS

Start-BitsTransfer - загрузка файла по протоколу BITS

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

Используем BITS для асинхронного копирования больших файлов по сети

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

Загрузка файла по протоколу BITS в асинхронном режиме с докачкой

Важно. По умолчанию Start-BitsTransfer работает с приоритетом Foreground (наивысший из возможных). Предполагается, что загрузка файла, запущенная в этом режиме будет соревноваться с другими процессами за полосу пропускания канала. Чтобы избежать этого, нужно явно указать в качестве аргумента команды любой другой приоритет, например, -Priority low:

Асинхронное задание BITS выполняется в фоновом режиме, а на экран не выводится процесс выполнения команды загрузки файла. Статус задания BITS можно получить из консоли PowerShell с помощью команды Get-BitsTransfer:

Get-BitsTransfer - сосояния задания BITS

Get-BitsTransfer | fl

Команда возвращает статус передачи (в данном случае видно, что передача окончена -Transferred), информацию о количестве переданных байт, общем размере файла, времени создания и завершения задания BITS.

Вы можете просмотреть статус всех заданий BITS, запущенных на компьютере, в табличной форме:

Get-BitsTransfer | select DisplayName, BytesTotal, BytesTransferred, JobState | Format-Table -AutoSize

При использовании асинхронного режима передачи, в целевом каталоге создается временный файл с расширением TMP (по умолчанию скрыт в проводнике). Чтобы конвертировать его в исходный тип файла (который хранится на сервере-источнике), нужно выполнить команду Complete-BitsTransfer:

Complete-BitsTransfer - завершить закачку

Задание загрузки BITS после этого считается завершенным и пропадает из списка заданий.

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

Start-BitsTransfer -Source C:\iso\w101809.iso -Destination \\ekt-fs1\iso -Asynchronous -DisplayName CopyISOtoEKT

Чтобы временно приостановить задание BITS, выполните:

Get-BitsTransfer -Name CopyISOtoEKT | Suspend-BitsTransfer

Для продолжения задания используется командлет Resume-BitsTransfer:

Get-BitsTransfer -Name CopyISOtoEKT | Resume-BitsTransfer -Asynchronous

Вы можете добавить в задание BITS дополнительные файлы с помощью командлета Add-BitsFile:

Get-BitsTransfer -Name CopyISOtoEKT | Add-BitsFile -Source C:\iso\w10msu\* -Destination \\ekt-fs1\iso -Asynchronous

Чтобы удалить все задания загрузки BITS на компьютере (в том числе запущенные другими пользователями), выполните команду:

Вы не сможете отменить задания BITS, запущенные из-под System (ошибка 0x80070005 Unable to cancel job). Для отмены такого задания нужно выполнить команду Remove-BitsTransfer из-под SYSTEM.

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

bits с аутентификацией

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

Копирование всего содержимого общей сетевой папки через BITS

Как мы уже говорили, для работы BITS не нужен Web сервер, это означает, что вы можем скопировать файлы непосредственно с других Windows-компьютеров или общих сетевых папок:

Start-BitsTransfer -Source \\msk-rep01\os\rhel-server-7.0-x86_64-dvd.iso -Destination c:\temp -Asynchronous

Командлеты модуля BitsTransfer не умеют рекурсивно копировать все файлы и папки из определённой директории, или файлы, которые используются другими программами. Чтобы из указанной сетевой папки скопировать все файлы с подкаталогами, воспользуемся такой функцией (можно предварительно проверить, существует ли целевой каталог и создать его):

Скрипт копирования содержимого папки по BITS

Import-Module BitsTransfer
$Source="\\msk-rep01\os\"
$Destination="c:\tmp\"
if ( -Not (Test-Path $Destination))
$null = New-Item -Path $Destination -ItemType Directory
>
$folders = Get-ChildItem -Name -Path $source -Directory -Recurse
$job = Start-BitsTransfer -Source $Source\*.* -Destination $Destination -asynchronous -Priority low
while( ($job.JobState.ToString() -eq 'Transferring') -or ($job.JobState.ToString() -eq 'Connecting') )
Sleep 3
>
Complete-BitsTransfer -BitsJob $job
foreach ($i in $folders)
$exists = Test-Path $Destination\$i
if ($exists -eq $false)
$job = Start-BitsTransfer -Source $Source\$i\*.* -Destination $Destination\$i -asynchronous -Priority low
while( ($job.JobState.ToString() -eq 'Transferring') -or ($job.JobState.ToString() -eq 'Connecting') )
Sleep 3
>
Complete-BitsTransfer -BitsJob $job
>

IIS разрешить загрузку файла

Если вы используете анонимную авторизацию, необходимо разрешить анонимным пользователям запись в каталог на уровне NTFS. Если загрузка файлов выполняется под авторизованными пользователями, им необходимо предоставить RW разрешения на папку загрузки.

Обратите внимание, что по-умолчанию IIS позволяет загружать файлы до 30 Мб. Чтобы разрешить загружать большие файлы, нужно в файле web.config изменить значение в параметре maxAllowContentLength.

Таким образом, использование возможностей BITS представляет собой отличную альтернативу традиционному копированию файлов по сети по протоколу SMB. В отличии от последнего, задание копирования файлов BITS выполняется несмотря на разрывы связи и перезагрузки компьютеров, и не так загружает канал связи, не мешая работе других сетевых приложений и пользователей. Протокол BITS может быть оптимальным решением для передачи по WAN сети больших файлов ISO образов и файлов виртуальных машин (vmdk, vhdx).

При работе на серверах в режиме подключения Remote Desktop Connection (RDP) постоянно возникает необходимость копирования/перемещения файлов между локальной и удаленной машиной. Для этого в подключении настраивается "проброс" дисков и буфера обмена локальной машины. Файлы копируются обычным способом в проводнике удаленной машины или просто через буфер обмена.

Такой "обычный" метод прекрасно работает до тех пор, пока файлы не оказываются сравнительно большими или соединение недостаточно стабильным. А большинство файлов, которые необходимо скопировать, как раз и являются большими: дистрибутивы, конфигурации, выгрузки баз, архивы логов, бэкапы и т.д. Загрузка / выгрузка таких файлов не всегда проходит успешно. Малейшая нестабильность канала приводит к обрыву передачи с ошибкой. Иногда приходится возобновлять передачу вновь и вновь и вновь, что может длиться часами. Особенно, если размер файла составляет несколько Гигабайт.


И если на серверах, которыми владеете Вы или Ваша Компания, возможны другие варианты организации файлообмена, кроме как по RDP-соединению, то к серверам, находящихся в инфраструктуре Заказчика, чаще всего есть только RDP доступ (к тому же, в большинстве случаев, через VPN) и организация альтернативных способов требует согласования со службой информационной безопасности Заказчика.


Однажды, после того как выгрузка нескольких гигабайт архивированных логов ТехЖурнала с продуктивной системы в контуре Заказчика для отправки на контроль в

Целью заметки не является подробное описание данного протокола. В Сети достаточно материала, в том числе и на русском языке. Сосредоточимся лишь на практическом применении в отношении RDP-сессий.

Реализация

При решении задачи я воспользовался реализацией скрипта на PowerShell

Для примера будем загружать с локальной машины на удаленную дистрибутив сервера 1С, т.к. доступа к Интернет с самого сервера нет.

Ниже привожу основную, рабочую часть скрипта. Достаточно указать в параметрах -Source и -Destination свои пути к файлам. Оба пути - с удаленной машины. Один указывает на локальный диск, второй - на "проброшенный" (\\tsclient)

Служба может работать в обе стороны, т.е. как скачивать на удаленную машину с локальной, так и закачивать с удаленной на локальную. Достаточно поменять местами значения параметров -Source и -Destination.

Запускать скрипт нужно на удаленной машине, т.е. в RDP-сессии.

Совет: самый простой способ добавить путь к файлу - найти его в проводнике, выделить, нажать Shift+ПКМ и выбрать "Копировать как путь". Что сделать дальше со строкой в буфере, полагаю и так все знают.

После запуска скрипт демонстрирует прогресс операции в процентах.


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


Если оставить задачу "без присмотра", т.е. без работающего скрипта, то загрузка выполнится, но загружаемые файлы не появятся в целевом каталоге. Вернее, в нём будут временные файлы вида "BIT5F71.tmp". Для того, чтобы в каталоге назначения объявились "правильные" файлы, необходимо выполнить "финализацию", при которой созданные временные файлы будут переименованы и задание службы будет удалено.

Сделать это можно, просто повторно запустив скрипт. Либо выполнить в консоли:


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


Как уже было показано, при завершении скрипта по Ctrl-C или закрытием окна и даже выходом из сессии, задача BITS-transfer не удаляется.

При необходимости отменить задачу, сделать это можно следующим образом:

Возможные ошибки

При первом запуске скрипта может возникнуть ошибка вида:

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

Файл для загрузки

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

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

Получение списка файлов и папок, содержащихся в папке

Извлечь все элементы непосредственно из папки можно с помощью командлета Get-ChildItem . Для отображения скрытых и системных элементов добавьте необязательный параметр Force. Например, эта команда отображает непосредственное содержимое диска C Windows PowerShell (которое совпадает с содержимым физического диска C Windows):

Эта команда выводит только элементы, содержащиеся на диске непосредственно, так же как и команда DIR оболочки Cmd.exe или команда ls оболочки UNIX. Для показа вложенных элементов необходимо также указать параметр -Recurse . (Время выполнения этой операции будет очень велико.) Для вывода всего содержимого диска C введите:

Командлет Get-ChildItem позволяет отфильтровать элементы с помощью параметров Path, Filter, Include и Exclude, но обычно осуществляется лишь фильтрация по имени. Сложную фильтрацию на основе других свойств элементов можно выполнить с помощью Where-Object .

Следующая команда находит все исполняемые файлы в папке Program Files, которые были в последний раз изменены после 1 октября 2005 г. и размер которых не менее одного мегабайта и не более десяти мегабайт:

Копирование файлов и папок

Копирование выполняется с помощью командлета Copy-Item . Следующая команда создает резервную копию C:\boot.ini в C:\boot.bak:

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

Эта команда работает, даже если целевой объект доступен только для чтения.

Так же выполняется и копирование папок. Эта команда копирует папку C:\temp\test1 в новую папку C:\temp\DeleteMe рекурсивно.

Можно также скопировать избранные элементы. Следующая команда копирует все файлы TXT, содержащиеся в папке C:\data , в папку C:\temp\text :

Для копирования элементов файловой системы можно использовать и другие средства. В Windows PowerShell по-прежнему работают команды XCOPY, ROBOCOPY и такие COM-объекты, как Scripting.FileSystemObject. Например, можно воспользоваться COM-классом Scripting.FileSystem сервера сценариев Windows для создания резервной копии файла C:\boot.ini в файле C:\boot.bak :

Создание файлов и папок

Создание новых элементов осуществляется одинаковым образом всеми поставщиками Windows PowerShell. Если поставщик Windows PowerShell поддерживает более одного типа элементов (например, поставщик Windows PowerShell FileSystem различает каталоги и файлы), необходимо указать тип элемента.

Эта команда создает папку C:\temp\New Folder :

Эта команда создает пустой файл C:\temp\New Folder\file.txt .

При использовании параметра Force с командой New-Item для создания папки, которая уже существует, она не перезапишет и не заменит папку. Будет просто возвращен имеющийся объект папки. Однако, если использовать New-Item -Force в уже имеющимся файле, файл будет полностью перезаписан.

Удаление всех файлов и папок, содержащихся в папке

Удалить вложенные элементы можно с помощью командлета Remove-Item , однако он потребует подтверждения удаления, если элемент сам что-нибудь содержит. Например, при попытке удаления папки C:\temp\DeleteMe , которая содержит другие элементы, Windows PowerShell предварительно предложит подтвердить удаление этой папки:

Если подтверждение для каждого вложенного элемента нежелательно, задайте параметр Recurse:

Подключение локальной папки как диска

Отобразить локальную папку можно с помощью команды New-PSDrive . Следующая команда создает локальный диск P: , корневым каталогом которого является локальный каталог Program Files, отображающийся только в сеансе PowerShell:

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

Чтение текстового файла в массив

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

Командлет Get-Content сразу рассматривает данные, считанные из файла, как массив с одним элементом на строку содержимого файла. Убедиться в этом можно, проверив свойство Length полученного содержимого:

Эта команда наиболее полезна для непосредственного ввода в Windows PowerShell информационных списков. Например, можно хранить в файле C:\temp\domainMembers.txt список имен компьютеров или IP-адресов по одному имени на каждую строку файла. Вы можете использовать командлет Get-Content , чтобы извлечь содержимое файла и поместить его в переменную $Computers :

Теперь переменная $Computers представляет собой массив, содержащий в каждом элементе имя компьютера.

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

К примеру, нам необходимо скопировать файлы из локальной папки C:\Scripts на удаленный сервер DC02 в папку C:\Temp. Для начала попробуем такую команду:

Copy-Item -Path C:\Scripts -Destination \\DC02\Temp

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

Copy-Item -Path C:\Scripts -Destination \\DC02\C$\Temp

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

ошибка доступа к шаре

Для ввода альтернативных учетных данных у командлета Copy-Item имеется специальный ключ Credential, поэтому попробуем так:

Copy-Item -Path C:\Scripts -Destination \\DC02\C$\Temp -Credential $(Get-Credentials)

Однако и тут не все гладко. Оказывается Copy-Item не поддерживает ввод учетных данных для файловой системы.

ошибка при вводе учетных данных

Обойти это ограничение можно несколькими путями. Например командлет New-PSDrive позволяет указывать учетные данные, поэтому можно подмонтировать папку на удаленном компьютере как сетевой диск:

New-PSDrive -Name X -PSProvider FileSystem -Root ″\\dc02\C$\Temp″ -Credential $(Get-Credential)

Скопировать файлы с помощью Copy-Item:

Copy-Item -Path C:\Scripts -Destination ″X:″ -Recurse -Force

Remove-PSDrive -Name X -Force

монтирование сетевого диска

Как вариант, можно удаленно расшарить нужную папку. Для начала создадим на удаленный компьютер CIM-сессию с правами администратора:

$session = New-CimSession -ComputerName dc02 -Credential $(Get-Credential)

Затем расшарим папку и выдадим к ней доступ:

New-SMBShare -Name ″Temp″ -Path ″C:\Temp″ -CimSession $session -Fullaccess ″Everyone″

На созданную шару скопируем нужные файлы:

Copy-Item -Path C:\Scripts -Destination \\DC02\Temp -Recurse -Force

И заметем следы:)

Remove-SMBShare -Name ″Temp″ -CimSession $session -Force
Remove-CimSession $session

создание шары на удаленном компьютере

И еще один вариант. В пятой версии PowerShell у командлета Copy-Item появились ключи ToSession и FromSession, дающие возможность копировать файлы прямо в удаленную сессию или из нее. Для примера создадим сессию на dc02:

$credentials = Get-Credential
$session = New-PSSession -ComputerName dc02 -Credential $credentials

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

Copy-Item -Path C:\Scripts -Destination C:\Temp -Recurse -ToSession $session

Copy-Item -Path C:\Temp -Destination C:\Temp -Recurse -Force -FromSession $session

копирование файлов с помощью ps remoting

Это самый удобный и, что немаловажно, безопасный способ. Но, к сожалению, он доступен только в PowerShell 5.0.

Читайте также: