在powershell中使用Test-Path命令,如何区分“文件夹不存在”和“访问被拒绝”?
TL;DR:好消息是Test-Path
即使您缺乏权限,通常也不会返回 false(当没有权限时,您会得到一个异常,而不是一个简单的$false
)
更深入地说,这取决于您所说的拒绝访问的含义。根据您要检查的权限,将取决于适用于您的 PowerShell 命令。
例如,C:\系统卷信息是非管理员没有权限的文件夹。Test-Path
对此文件夹返回 true - 它存在 - 即使您无法访问它。另一方面,跑步Get-Child-Item
失败了。所以在这种情况下,你需要运行
$path = 'C:\System Volume Information'
if ((Test-Path $path) -eq $true)
{
gci $path -ErrorAction SilentlyContinue
if ($Error[0].Exception -is [System.UnauthorizedAccessException])
{
# your code here
Write-Host "unable to access $path"
}
}
但是,如果您具有读取权限但没有写入权限,那么您必须实际尝试写入该文件,或者查看其安全权限并尝试找出适用于脚本运行的当前用户的内容:
(get-acl C:\windows\system32\drivers\etc\hosts).Access
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)