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

发布于 2024-10-31 21:28:51 字数 346 浏览 3 评论 0原文

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

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

如果我作为“仅删除文件”组的成员对此文件夹执行测试路径,则会返回 false。甚至 [System.IO.Directory]::Exists() 也会返回 false。

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

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

问候, 团队

I'm having trouble using the Powershell CmdLet Test-Path.

I created a Share on a Server (\\Servername\MyShare$), which allows one Group of users to just create a file and append data, while others users can just read and delete these files. The first group is not allowed to do anything else, including Read-Permissions, Read-Attributes and so on.

If I do a Test-Path on this folder as member of the "drop files only" group, it returns false. Even [System.IO.Directory]::Exists() returns false.

I am searching for a way to test if a directory exists without the need to have Read-Permissions or Read-Attributes rights. Any ideas?

Is this the correct behaviour of those two methods?

Regards,
teamoo

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

当爱已成负担 2024-11-07 21:28:51

好吧,如果没有人愿意冒险......

这是一个解决方案:

我不允许访问目录 .\f1\f2.\f1\f3 确实不存在。

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(),您就可以理解为什么它不可访问,以及它是否存在。你可以称之为“拼凑”,但这也是一种解决方案。抱歉示例中的法语。

Ok, if nobody want to venture ...

Here is a solution :

I'am not allowed to access to directory .\f1\f2 and .\f1\f3 does not exists.

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

So if you test $Error[0].exception.gettype() after the Get-Item you can understand why it's not accessible, so if it exists or not. You can call that "bricolage", but it's also a solution. Sorry for the french in the example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文