Basic usage
At it’s most basic, the Copy-Item cmdlet copies a single file from point A to point B using the Path parameter as the source file path and the Destination parameter as the destination folder path.
This cmdlet can also copy empty folders as well. I’ll list item in the C:EmptyFolder folder and then copy those out.
Perhaps there is a read-only file in the folder. By default, Copy-Item will not overwrite it. To force the override, just add the Force parameter.
Further reading

Getting selective with copy-item
In addition to copying a single file or folder, we can also copy the entire contents of a folder. The Path parameter of Copy-Item accepts wildcard characters like the asterisk to match one or more characters or the question mark to only match a single character.
Powershell copy-item
If you’re in a high-security environment or need to transfer files from an internal network to a DMZ that might have various port restrictions, how can you ensure that your scripts are able to copy files to nodes all the time? One way to do so is to use PowerShell v5’s Copy-Item cmdlet with the new –ToSession parameter.
This parameter was introduced with Windows Management Framework (WMF) v5 with the Copy-Item cmdlet. It provides a way to transfer files over the same link that you might use today to execute commands remotely on computers with cmdlets like Invoke-Command.
Как скопировать файл по сети при помощи powershell и службы bits | настройка серверов windows и linux
Обновлено 08.08.2022
Всем привет сегодня расскажу как скопировать файл по сети при помощи PowerShell и службы BITS. В суровых условиях жития в Windows, в случае необходимости скачать огромный файл из интернета или скопировать его в удалённый филиал с отвратительным рвущимся интернетом, не надо бежать за wget’ом и rsync’ом. Хотя это и совершенно замечательные и полезные утилиты, всё необходимое у нас уже есть. Необходимое называется Powershell v2 и служба Background Intelligent Transfer Service. Они есть во всех Windows, начиная с XP. По крайней мере, если те обновляются. Основная прелесть BITS – задание выполняется не смотря на разрывы связи и перезагрузки компьютеров. Использовать эту радость можно, например, так:
В задании, кстати, может быть сразу много файлов. А можно сделать csv-файл, где в каждой строке написать src,dst и скормить это как Import-CSV filelist.txt | Start-BitsTransfer.
Вот так вот просто скопировать файл по сети при помощи PowerShell и службы BITS.
Материал сайта vhod-v-lichnyj-kabinet.ru
Проблема
Но как быть, если к примеру необходимо скопировать каталог или файл на “сессионные” машины? Copy-Item работает только в случае использования “одиночной” сессии, как пример:
Copy-Item -Recurse "./cwiccs/" -Destination "C:" -ToSession $s -Force
Завершается ошибкой:
Решение
Решить можно следующим образом – перебором сессий через foreach:
Где далее использовать Copy-Item:
Copy-Item -Recurse "./cwiccs/" -Destination "C:" -ToSession $session -Force
Можно все обернуть в скрипт:
Done.
Удаленное копирование файлов с помощью powershell
С PowerShell версии 5 и далее (входит в Windows Server 2022 и, загружаемый как часть WMF 5 для более ранних версий), это возможно с remoting. Преимущество этого заключается в том, что он работает, даже если по какой-либо причине вы не можете получить доступ к общим ресурсам.
чтобы это работало, локальный сеанс, в котором инициируется копирование, должен иметь PowerShell 5 или выше. Удаленный сеанс делает не необходимо установить PowerShell 5 — он работает с версиями PowerShell до 2 и версиями Windows Server до 2008 R2.[1]
С сервера A создайте сеанс на сервер B:
$b = New-PSSession B
а потом еще:
Copy-Item -FromSession $b C:Programstemptest.txt -Destination C:Programstemptest.txt
копирование элементов в B выполняется с помощью -ToSession
. Обратите внимание, что местные тропы используются в обоих случаях, вы должны отслеживать, на каком сервере вы находитесь.
[1]: При копировании С или на удаленный сервер, который имеет только в PowerShell 2, остерегайтесь эта ошибка в PowerShell 5.1, что на момент написания означает, что рекурсивное копирование файлов не работает с -ToSession
, по-видимому, копирование вообще не работает с -FromSession
.