首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试路径/ System.IO.Directory::Exists未按预期工作

测试路径/ System.IO.Directory::Exists未按预期工作
EN

Stack Overflow用户
提问于 2011-04-12 17:15:24
回答 1查看 5.9K关注 0票数 2

我在使用Powershell CmdLet测试路径时遇到了问题。

我在服务器上创建了一个共享(\Servername\MyShare$),它允许一组用户只创建一个文件并附加数据,而其他用户只能读取和删除这些文件。第一组不允许执行任何其他操作,包括读取权限、读取属性等。

如果我以"drop files only“组成员的身份在此文件夹上执行Test-Path,它将返回false。即使是[System.IO.Directory]::Exists()也会返回false。

我正在寻找一种方法来测试目录是否存在,而不需要具有读取权限或读取属性权限。有什么想法吗?

这是这两种方法的正确行为吗?

问候,teamoo

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-13 13:40:03

好吧,如果没人想冒险...

这里有一个解决方案:

不允许我访问目录.\f1\f2,并且.\f1\f3不存在。

代码语言:javascript
复制
PS C:\Silogix> Get-ChildItem .\f1\f2 -ErrorAction silentlycontinue
PS C:\Silogix> $Error[0].exception
L'accès au chemin d'accès 'C:\Silogix\f1\f2' est refusé.
PS C:\Temp\Temp> $Error[0].exception.gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     UnauthorizedAccessException              System.SystemException

PS C:\Silogix> Get-ChildItem .\f1\f3 -ErrorAction silentlycontinue
PS C:\Silogix> $Error[0].exception.gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     ItemNotFoundException

因此,如果您在Get-Item之后测试$Error[0].exception.gettype(),您就可以理解为什么它不可访问,以及它是否存在。您可以将其称为"bricolage",但它也是一种解决方案。对于示例中的法语,我很抱歉。

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

https://stackoverflow.com/questions/5632908

复制
相关文章

相似问题

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