在powershell中,有没有办法检查路径是否有效,无论拒绝访问

时间:2016-11-30 22:44:07

标签: powershell

在powershell中,有没有办法检查路径是否有效而不管拒绝访问?

当我尝试使用powershell cmdlet" test-path"来验证\ $ ServerName \ $ ShareName的UNC路径时遇到了这个问题。 (见下面的代码)。 cmdlet将返回" false"尽管路径确实存在(但是它已经为运行"测试路径"的人拒绝访问组)到UNC路径。

test-path "\\$serverName\$shareName"

我需要一种方法来检查路径是否存在,无论是否有拒绝访问组。

你是否在powershell中有一个衬垫(或一小段代码)来解决这个问题?

2 个答案:

答案 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或您所在的组的文件夹,那么您将能够执行测试路径,但是如果您没有&这些文件夹中的文件具有读取属性,您仍然只能看到允许访问/查看的文件夹。