在powershell中,有没有办法检查路径是否有效而不管拒绝访问?
当我尝试使用powershell cmdlet" test-path"来验证\ $ ServerName \ $ ShareName的UNC路径时遇到了这个问题。 (见下面的代码)。 cmdlet将返回" false"尽管路径确实存在(但是它已经为运行"测试路径"的人拒绝访问组)到UNC路径。
test-path "\\$serverName\$shareName"
我需要一种方法来检查路径是否存在,无论是否有拒绝访问组。
你是否在powershell中有一个衬垫(或一小段代码)来解决这个问题?
答案 0 :(得分:1)
我找到了解决方案。在try catch脚本块之后,下面的代码将给出正确的布尔值。
当$ path无效时,test-path不会给出错误并返回 FALSE。
当$ path有效且用户有权访问时,test-path将返回 TRUE。
当$ path有效且用户无法访问时,test-path将抛出 错误(测试路径:访问被拒绝),catch脚本将强制执行 布尔值为TRUE。
示例:
[boolean]$PathExist = $False
Try { $PathExist = Test-Path $path -ErrorAction Stop }
Catch {
if($_.Exception.Message -eq 'Access is Denied'){
$PathExist = $True
}
else {
$PathExist = $False
}
}
答案 1 :(得分:0)
这是不可能的,为了查看您至少需要用户帐户的Traverse Folder或您所在的组的文件夹,那么您将能够执行测试路径,但是如果您没有&这些文件夹中的文件具有读取属性,您仍然只能看到允许访问/查看的文件夹。