我在使用Powershell CmdLet测试路径时遇到了问题。
我在服务器上创建了一个共享(\ServernameMyShare$),它允许一组用户创建文件并附加数据,而其他用户可以读取和删除这些文件。第一个组不允许执行任何其他操作,包括Read-Permissions, Read-Attributes等。
如果我在这个文件夹上做一个Test-Path作为"drop files only"组的成员,它返回false。即使[System.IO.Directory]::Exists()
返回false
我正在寻找一种方法来测试一个目录是否存在,而不需要有读取权限或读取属性的权利。什么好主意吗?
这是这两个方法的正确行为吗?
问候,teamoo
好吧,如果没人想冒险…
这是一个解决方案:
我不允许访问目录.f1f2
和.f1f3
不存在。
PS C:Silogix> Get-ChildItem .f1f2 -ErrorAction silentlycontinue
PS C:Silogix> $Error[0].exception
L'accès au chemin d'accès 'C:Silogixf1f2' est refusé.
PS C:TempTemp> $Error[0].exception.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True UnauthorizedAccessException System.SystemException
PS C:Silogix> Get-ChildItem .f1f3 -ErrorAction silentlycontinue
PS C:Silogix> $Error[0].exception.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True ItemNotFoundException
因此,如果您在Get-Item
之后测试$Error[0].exception.gettype()
,您可以理解为什么它不可访问,所以它是否存在。你可以称之为"拼凑",但这也是一种解决方案。抱歉示例中的法语