Я хочу загрузить список предопределенных файлов из удаленных сетевых ресурсов, не перезаписывая локальные файлы с тем же именем. У меня эта функция в основном работает в PowerShell с использованием модуля Bitstransfer. Вы можете видеть в коде, что C: \ SMB \ paths.txt указывает на локальный файл, который включает удаленные пути SMB.
SMBBulkDownload.ps1:
Import-Module bitstransfer
foreach($line in Get-Content C:\SMBDump\paths.txt) {
$sourcePath = $line
$destPath = "C:\SMBDump\"
Start-BitsTransfer -Source $sourcePath -Destination $destPath
}
где C: \ SMB \ paths.txt содержит (образец фрагмента):
\\10.17.202.21\some\dir\app.config
\\10.19.197.68\some\dir\app.config
\\10.28.100.34\some\dir\Web.config
Приведенный выше код загружает файлы правильно, если у них разные имена файлов. В случае, когда имена файлов совпадают, передача битов возвращает ошибку ACCESSDENIED. Это могло произойти из-за того, что модуль не поддерживает копии файлов с одинаковыми именами, или из-за условий гонки при копировании файлов с одинаковыми именами в одно и то же время. Это прискорбно, потому что моя работа требует массовой загрузки множества разных файлов с одинаковыми именами, таких как App.Config, Web.Config и т. Д.
Ошибка:
Start-BitsTransfer : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
Есть ли у кого-нибудь решение, которое может обойти этот одноименный блок копирования файлов? В идеале мне нужно решение, которое копирует файлы с повторяющимися именами в тот же каталог с суффиксом «_1», «_2» или _.