首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找一种简单的方法来测试文件夹是否为空或无法访问/访问被拒绝

寻找一种简单的方法来测试文件夹是否为空或无法访问/访问被拒绝
EN

Stack Overflow用户
提问于 2019-05-01 22:58:31
回答 1查看 141关注 0票数 0

测试文件夹是否为空非常简单,已经讨论过很多次了。主要使用测试路径或获取子项示例:Powershell test if folder empty

我正在编写一个脚本,用于审核和更正企业环境中SMB共享上的文件NTFS权限。

我遇到了一些起初看起来很简单的事情,但我找不到一个简单的解决方案。我想知道有没有cmdlet可以帮上忙。也就是说,区分给定的文件夹是空的还是我没有访问它的权限。

问题是我看到的所有解决方案都假设您有权访问该文件夹。

我在想,我将不得不编写一个油腻的函数来做多个测试,然后捕获并测试错误代码或其他什么。但我想我应该先问问Stack Overflow的聪明的程序员,然后再走进那个rabbithole。

有没有更优雅的方法来测试这一点?一个Test-MyAccess cmdlet还是什么?

Test-Path为空文件夹和没有访问权限的文件夹返回相同的结果。对于空文件夹和没有访问权限的文件夹,Get-childitem返回null/empty。除非没有访问权限的文件夹有错误。

代码语言:javascript
复制
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
......
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-02 21:06:34

多亏了@Lee_Dailey,我似乎一开始就走上了正确的道路。看起来方法是检查Get-ChildItem中的错误。

似乎应该有一个cmdlet来做这件事,但我想我会写一个函数。我想应该是这样的。

代码语言:javascript
复制
Function Get-FolderProperties ($Path){
    $ErrOut = $Null
    $Folder = Get-ChildItem -Path $Path -ErrorAction SilentlyContinue -ErrorVariable ErrOut
    If($ErrOut) { 
    # There was an error accessing $path. Do something with $ErrOut

    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55938249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档