2

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

我在服务器上创建了一个共享 (\\Servername\MyShare$),它允许一组用户只创建一个文件并附加数据,而其他用户只能读取和删除这些文件。第一组不允许做任何其他事情,包括 Read-Permissions、Read-Attributes 等。

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

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

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

问候,teamoo

4

1 回答 1

3

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

这是一个解决方案:

我不允许访问目录.\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您就可以理解为什么它无法访问,以及它是否存在。您可以将其称为“拼凑”,但这也是一种解决方案。对不起,示例中的法语。

于 2011-04-13T05:40:03.240 回答