PowerShell: Копировать элемент не работает, несмотря на тот же процесс, который работает с проводником Windows

Вопрос:У меня есть script, который должен копировать файлы на регулярной основе (каждый час). Я могу открыть исходную и целевую папку с помощью Windows Explorer и скопировать файл без проблем. Однако, если я попробую то же самое в PowerShell, я получаю доступ к пути, которому отказано в ошибке. Я проверил разрешения на общий ресурс, и у

Вопрос:

У меня есть script, который должен копировать файлы на регулярной основе (каждый час). Я могу открыть исходную и целевую папку с помощью Windows Explorer и скопировать файл без проблем.

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

Команда Copy-Item:

Copy-Item \idmststtrm2tns_admin$tnsnames.ora -Destination \bts13r2btnsnames -Force

Ошибки:

Copy-Item : Access to the path ‘\bts13r2btnsnamestnsnames.ora’ is denied. At line:1 char:1 + Copy-Item \idmststtrm2tns_admin$tnsnames.ora -Destination \bts13r2btnsnames … + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (\idmststtrm2tns_admin$tnsnames.ora:FileInfo) [Copy-Item], UnauthorizedAccessException + FullyQualifiedErrorId : CopyFileInfoItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.CopyItemCommand Copy-Item : Access to the path ‘\bts13r2btnsnamestnsnames.ora’ is denied. At line:1 char:1 + Copy-Item \idmststtrm2tns_admin$tnsnames.ora -Destination \bts13r2btnsnames … + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Copy-Item], UnauthorizedAccessException + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.CopyItemCommand

Изменения:

Когда я выполняю Get-ChildItem по пути назначения, я могу видеть содержимое папки.

Результаты получения элемента:

get-item \idmststtrm2tns_admin$tnsnames.ora Directory: \idmststtrm2tns_admin$ Mode LastWriteTime Length Name —- ————- —— —- -a— 3/10/2017 8:49 AM 14143 tnsnames.ora get-item \bts13r2btnsnamestnsnames.ora Directory: \bts13r2btnsnames Mode LastWriteTime Length Name —- ————- —— —- -a— 3/8/2017 9:51 AM 15991 tnsnames.ora get-item \bts13r2btnsnames Directory: Mode LastWriteTime Length Name —- ————- —— —- d—- 3/21/2017 11:14 AM tnsnames

Пробовал использовать xcopy:

xcopy \idmststtrm2tns_admin$tnsnames.ora \bts13r2btnsnamestnsnames.ora Access is denied. Ответ №1

Попробуйте открыть powershell как администратор, иногда это вызывает эту проблему.

Ответ №2

У вас есть правильная идея, но что, если вы попробуете использовать “Административный доступ” для доступа к другой системе.

Созданы некоторые стандартные переменные: $Source и $Target. Теперь мы используем Get-ChildItem и переключатель -Path, чтобы захватить требуемый файл или каталог. Затем мы используем Copy-Item и переключатель -Force для отправки файла на другой сервер. Этот метод должен работать, но будет описывать другой метод.

Я предполагаю, что он будет выглядеть примерно так.

$Source = «\idmststtrm2c$apporacleproduct11.2.0dbhome_1networkadmintns_admin$tnsnames.ora» $Target=»\bts13r2bc$apporacleproduct11.2.0dbhome_1networkadmintnsnames» Get-ChildItem -Path $Source | Copy-Item -Destination $Target -Force

Другой вариант – убедиться, что вы сначала имеете доступ на запись к обоим общим каталогам. Как только это подтвердится, мы запускаем следующее:

$Source=»\idmststtrm2tns_admin$tnsnames.ora» $Target=»\bts13r2btnsnames» Get-ChildItem -Path $Source | Copy-Item -Destination $Target -Force #(Get-Acl $Source).Access #Verify $Source Access #(Get-Acl $Target).Access #Verify $Target Access

Сообщите нам, если это сработает.

Ответ №3

Эта проблема связана с правами доступа к сетевому ресурсу. Хотя права доступа были установлены правильно, разрешения NTFS отсутствовали. Системному администратору необходимо будет обеспечить, чтобы оба набора разрешений позволяли учетной записи записывать в папку. Как только это было правильно обновлено, script смог выполнить копию общего сетевого ресурса.

Оцените статью
Добавить комментарий