Единственные объекты, которые могут быть доступны только для чтения, - это файлы.Когда вы используете командлет Get-ChildItem
, вы получаете объекты типа System.IO.FileInfo
и System.IO.DirectoryInfo
.FileInfos имеет свойство с именем IsReadOnly
.Таким образом, вы можете сделать это одним вкладышем:
dir -recurse -path C:\Somewhere | ? {-not $_.IsReadOnly -and -not $_.PsIsContainer} | Remove-Item -Force -WhatIf
Свойство PsIsContainer
создается PowerShell (префикс Ps передает его) и сообщает, является ли элемент файлом илипапка.Мы можем использовать это для передачи только файлов на Remove-Item
.
Удалить -WhatIf
, когда вы будете готовы к реальному удалению.