Тестирование, если папка пуста, довольно просто и обсуждалось много раз.В основном используется test-path или get-childitem Пример: Тест Powershell, если папка пуста
Я работаю над сценарием для аудита и исправления разрешений NTFS для файлов на общих ресурсах SMB в моей корпоративной среде.
Я столкнулся с чем-то, что на первый взгляд показалось бы простым, но я не смог найти простого решения.Мне интересно, есть ли командлет, который поможет.То есть различие между тем, является ли данная папка пустой или у меня нет к ней доступа.
Проблема в том, что все решения, которые я вижу, предполагают, что у вас есть доступ к папке.
Я думал, что мне придется написать жирную функцию, чтобы выполнить несколько тестов, а затем перехватывать и тестировать коды ошибок или что-то в этом роде.Но я решил спросить умных кодеров здесь, в Stack Overflow, прежде чем спуститься в эту кроличью нору.
Есть ли более элегантный способ проверить это?Командлет Test-MyAccess или что-то еще?
Test-Path возвращает одинаковые результаты для пустых папок и папок без доступа.Get-childitem возвращает пустое / пустое значение для пустых папок и папок без доступа.За исключением того, что в папке без доступа есть ошибка.
PS H:\PowerShell\NTFS> Test-Path $EmptyFolder
True
PS H:\PowerShell\NTFS> Test-Path $EmptyFolder\*
False
PS H:\PowerShell\NTFS> Test-Path $NoAccessFolder
True
PS H:\PowerShell\NTFS> Test-Path $NoAccessFolder\*
False
PS H:\PowerShell\NTFS> Get-ChildItem -Path $EmptyFolder
PS H:\PowerShell\NTFS> Get-ChildItem -Path $NoAccessFolder
Get-ChildItem : The specified network name is no longer available.
At line:1 char:1
+ Get-ChildItem -Path $NoAccessFolder
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ReadError: (\\server.domain....\Sufolder1\Sub3:String) [Get-ChildItem], IOException
......