У меня есть массив строк-путей на папки и файлы.
Я в цикле foreach получаю каждый элемент массива и проверяю ряд параметров, в том числе если текущий элемент (файл или папку) можно удалить без запроса прав администратора - то удаляю элемент.
В противном случае я добавляю элемент в отдельный массив и в дальнейшем перебираю элементы отдельного массива и формирую многострочную команду, чтобы 1 раз запустить Start-Process powershell с правами администратора и удалить все элементы с правами администратора за 1 раз.
Проблема:
Я для теста создал папку в Проводнике простым способом - нажав на верхней панели кнопку "Новая папка", либо сочетание клавиш "Ctrl + Shift + N"
Я не могу найти нормальный способ проверить, что я могу удалить папку без прав администратора.
Гуглил и спрашивал ChatGPT, были такие варианты:
1.
$targetPath = 'D:\TEMP\folder\test\Новая папка'
Test-Path -Path "$targetPath" -AccessRights "Delete" -ErrorAction SilentlyContinue
- выполнение строки с Test-Path выкидывает ошибку, значит права администратора нужны
2.
$targetPath = 'D:\TEMP\folder\test\Новая папка'
$acl = Get-Acl -Path $folderPath
$hasDeleteAccess = $acl.Access | Where-Object { $_.IdentityReference -eq $env:USERNAME -and $_.FileSystemRights -match "Delete" }
if ($hasDeleteAccess) {
Write-Host "У вас есть права для удаления папки $folderPath."
} else {
Write-Host "Вам нужны права администратора для удаления папки $folderPath."
}
- тут тоже, получается, что нужны права админа для удаления папки.
Но в самом Проводнике при удалении и каком-либо изменении папки - права администратора не запрашиваются. Папка обычная, созданная обычным/стандартным способом в Проводнике.
Вопрос:
Как в Powershell проверить, что папку можно удалить без запроса прав администратора?
Только проверить, не удалять.