Описания
Не удается удалить непустую папку в каталоге OneDrive
Шаг для воспроизведения
- Запустить PowerShell в каталоге OneDrive
PS C:\Users\MyUserName\OneDrive>
- Попробуйте использовать командлет Remove-Item, чтобы удалить непустую папку в этом каталоге, например: папку. \ Test \
PS C:\Users\MyUserName\OneDrive> Remove-Item .\test\
Ожидаемый результат
Без параметра -Recurse PowerShell должен возвращать подтверждающее сообщение, например
Confirm
The item at C:\Users\MyUserName\OneDrive\test\ has children and the Recurse parameter was not specified. If you continue, all children will be removed with the item. Are you sure you want to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
Фактический результат
PowerShell возвращает сообщение об ошибке
Remove-Item: Cannot remove item C:\Users\MyUserName\OneDrive\test\: The directory is not empty. : 'C:\Users\MyUserName\OneDrive\test\'
Примечание
- PowerShell и администратор: PowerShell дает тот же результат;
- Если я выхожу из процесса OneDrive и создаю новую непустую папку в каталоге OneDrive, PowerShell может удалить ее как обычно (см. Примечание 4., поскольку несинхронизированные папки не имеют атрибута ReparsePoint);
- CMD может успешно удалить папку, что означает, что я могу использовать следующую команду в PowerShell, чтобы удалить папку. Но я хочу достичь своей цели только с помощью командлета PowerShell;
cmd.exe /C "rd /s test"
- Командлет Get-ChildItem показывает, что режим обычных папок (не синхронизируемых OneDrive) — «d» (каталог), а режим синхронизируемых папок — «l» (точка повторной обработки). Является ли это причиной того, что я не могу удалить папку из каталога OneDrive в обычном режиме?
Информация о версии
PS Версия : 7.1.3
ОС : Microsoft Windows 10.0.19042
Версия OneDrive : 21.052.0314.0001 (Office 365 A1)
Обновлять
Я пытаюсь удалить тестовую папку в PowerShell 5, но тоже не могу.
Сообщение об ошибке от PowerShell 5.1:
PS C:\Users\MyUserName\OneDrive> Remove-Item .\test\ -Force -Recurse
Remove-Item : Access to the cloud file is denied.
At line:1 char:1
+ rm .\test\ -Force -Recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Remove-Item], Win32Exception
+ FullyQualifiedErrorId : System.ComponentModel.Win32Exception,Microsoft.PowerShell.Commands.RemoveItemCommand
Совершенно очевидно, что объекты файлов и папок обрабатываются Remove-Item
по-разному. Если я вспомню сценарий, который я написал, чтобы сделать что-то подобное, мне нужно было сначала удалить файлы, прежде чем удалять папки. — person OriBeta schedule 10.04.2021
Что произойдет, если вы попробуете с -Force
? — person OriBeta schedule 10.04.2021
Попробуйте -Recurse
. Вам следует посмотреть на документы. — person OriBeta schedule 11.04.2021
@Vivere Я попробовал, но ничего не вышло. И обычно, даже если без -Recurse
, PowerShell должен возвращать подтверждающее сообщение (точно так же, как ожидаемый результат в вопросе) вместо сообщения об ошибке. — person OriBeta schedule 11.04.2021
@SantiagoSquarzon Я попробовал, но ничего не вышло. На самом деле в тестовой папке нет скрытых файлов или папок, поэтому я думаю, что параметр -Force
не имеет значения. — person OriBeta schedule 11.04.2021
@Scepticalist Я знаю, как удалить chinditems перед удалением папки. Я просто хочу знать, почему несинхронизированная непустая папка может быть легко удалена Remove-Item -Recurse
, а папки, синхронизированные OneDrive, нет? — person OriBeta schedule 11.04.2021
Я просто ударил то же самое, и это сработало для меня:
Я новичок в PowerShell, поэтому могут быть более элегантные или правильные способы сделать это.
Он работал, но не удаляет папки, только файлы. — person OriBeta; 12.05.2021
В предыдущем ответе скрытые файлы не обрабатывались. Вы можете добавить их в свой профиль.