Подтвердить что ты не робот

Ошибки разрешения в PowerShell

Я новичок в PowerShell. При попытке написать простой script, который удаляет содержимое папки, а затем заполняет его файлами, скопированными из другой папки, я всегда получаю ошибку PermissionDenied.

Подробности:

+ remove-item <<<<  D:\path\* -recurse
    + CategoryInfo : PermissionDenied: (save.gif:FileInfo) [Remove-Item], IOException
    + FullyQualifiedErrorId : RemoveFileSystemItemUnAuthorizedAccess,Microsoft.PowerShell.Commands.RemoveItemCommand

Где проблема? Я могу управлять обоими папками через Explorer. Ошибка возникает при запуске из файла script и из оболочки (с использованием Windows PowerShell ISE). Процесс ISE выполняется под моей учетной записью. Я запускаю Windows 7 Professional и являюсь локальным администратором.

Edit: После предложения Ричарда я попробовал подробный режим (который, казалось, не имел никакого эффекта).

PS Z:\> $error[0] | fl * -force

PSMessageDetails      : 
Exception             : System.IO.IOException: Not Enough permission to perform operation.
TargetObject          : D:\path\file.txt
CategoryInfo          : PermissionDenied: (D:\path\file.txt:FileInfo) [Remove-Item], IOException
FullyQualifiedErrorId : RemoveFileSystemItemUnAuthorizedAccess,Microsoft.PowerShell.Commands.RemoveItemCommand
ErrorDetails          : Cannot remove item D:\path\file.txt: Not Enough permission to perform operation.
InvocationInfo        : System.Management.Automation.InvocationInfo
PipelineIterationInfo : {0, 1}

Я не вижу ничего полезного там (но спасибо за советы в любом случае).

Изменить 2: Хорошо, вот источник script:

remove-item D:\path_A\* -recurse
copy-item D:\path_B\* D:\path_A\

Что это. Элемент remove, кажется, бросает в каждый файл.

4b9b3361

Ответ 1

Включен ли UAC? Если это так, попробуйте запустить сеанс PowerShell как "Администратор". Это действительно похоже, что у вас нет разрешения на удаление объектов.

У нас очень строгие политики безопасности, когда я работаю, и пользователи, не знакомые с UAC, все время сжигаются.

Ответ 2

Попробуйте:

remove-item D:\path_A\* -recurse -force

Ответ 3

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

Ответ 4

После этой ошибки (и предполагая в тот момент в ней самую последнюю ошибку):

$error[0] | fl * -force

расширит детали ошибки и исключения. Это должно дать вам больше информации.

Другое дело - включить подробное ведение журнала

$VerbosePreference = "Continue"

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

Наконец, PowerShell ISE включает отладчик, который позволяет вам пройти через script.