Задать вопрос
@mafnitofon
СисАдмин

Как подружить Robocopy со смонтированным webdav диском в powershell?

Сделал POWERSHELL скрипт для копирования данных с облака в локальное расположение и наоборот.
Алгоритм такой:
  • -монтируется диск средствами POWERSHELL
  • -Происходит копирование со смонтированного диска в локальное расположение через ROBOCOPY
  • -Происходит копирование на смонтированный диск из локальнго расположение через ROBOCOPY
  • -Диск размонтируется>

Проблема в том, что смонтированный диск в robocopy - выдает ошибку 3 (0x00000003). Причем при использовании переменной Copy-Item - все нормально проходит.

#-------Подключение яндекс диска-------
# Имя пользователя
$YaUser = 'логин@диска'
# Пароль пользователя
$YaPasswd = 'проль от об_диска'
# Имя диска, одна буква
$disk = 'R'
#Путь
$root = '\\webdav.yandex.ru@SSL\DavWWWRoot'
#-------Работа с учётной записью-------
$YaPasswd = ConvertTo-SecureString $YaPasswd -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential($YaUser, $YaPasswd)


New-PSDrive -Name $disk -PSProvider FileSystem -Root $root -Credential $creds

$yad = 'R:'
$dst = 'C:\111\Общая\YandexWebDav\'
$log = 'C:\111\Общая\robocopy.log'

#Из облака
#Robocopy $src $dst /E /COPYALL /B /J /Z /XO /PURGE /MT:32 /V /R:3 /W:1 /REG /UNILOG+:$log
Robocopy "R:" $dst /UNILOG+:$log

#Проверка
Copy-Item  'R:\' $dst

#В облако
Robocopy $dst $yad /E /COPYALL /B /J /Z /XO /PURGE /MT:32 /V /R:3 /W:1 /REG /UNILOG+:$log


#-------Удаление диска-------
Remove-PSDrive -Name $disk
  • Вопрос задан
  • 218 просмотров
Подписаться 2 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Специалист по информационной безопасности
    11 месяцев
    Далее
  • Skillbox
    Системный администратор с нуля
    6 месяцев
    Далее
  • Stepik
    Профессия "Инженер технической поддержки" - ваш старт в IT
    4 недели
    Далее
Пригласить эксперта
Ответы на вопрос 1
@MaxKozlov Куратор тега PowerShell
подозреваю, проблема в том, что New-PSDrive - это не то же самое что NET USE, он себе диск создаёт только в своей собственной сессии
потому его и видит только сам же powershell, но не robocopy

Раз вы пароль не скрываете, то сделайте

net use ${disk}: $root /user:$YaUser $YaPasswd

ещё вариант, всё равно не совсем powershell :)
$w = New-Object -ComObject WScript.Network
$w.MapNetworkDrive("${disk}:", $root, $true, $YaUser, $yapasswd)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы