Ошибки разрешения в 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, кажется, бросает в каждый файл.
Ответы
Ответ 1
Включен ли UAC? Если это так, попробуйте запустить сеанс PowerShell как "Администратор". Это действительно похоже, что у вас нет разрешения на удаление объектов.
У нас очень строгие политики безопасности, когда я работаю, и пользователи, не знакомые с UAC, все время сжигаются.
Ответ 2
Попробуйте:
remove-item D:\path_A\* -recurse -force
Ответ 3
В дополнение к причинам, упомянутым в вышеприведенных сообщениях, я заметил, что при доступе к файлу через отдельный процесс возникает ошибка "Доступ запрещен" (в моем случае мне пришлось остановить сервер до переименования может успешно выполняться).
Ответ 4
После этой ошибки (и предполагая в тот момент в ней самую последнюю ошибку):
$error[0] | fl * -force
расширит детали ошибки и исключения. Это должно дать вам больше информации.
Другое дело - включить подробное ведение журнала
$VerbosePreference = "Continue"
чтобы получить более подробную информацию о том, какая операция выполняется при возникновении ошибки.
Наконец, PowerShell ISE включает отладчик, который позволяет вам пройти через script.