Test-Path / System.IO.Directory::Exists不按预期工作

时间:2011-04-12 09:15:24

标签: powershell acl directory-permissions

我在使用Powershell CmdLet测试路径时遇到了麻烦。

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

如果我在此文件夹上执行Test-Path作为“仅丢弃文件”组的成员,则返回false。即使[System.IO.Directory]::Exists()返回false。

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

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

此致 teamoo

1 个答案:

答案 0 :(得分:2)

好的,如果没有人想冒险......

这是一个解决方案:

我不允许访问目录.\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

因此,如果您在$Error[0].exception.gettype()之后测试Get-Item,您就可以理解为什么它无法访问,所以如果它存在与否。你可以称之为“bricolage”,但它也是一种解决方案。对不起,示例中为法语。