【问题标题】:Check if user has read permissions on a directory (powershell)检查用户是否对目录具有读取权限(powershell)
【发布时间】:2021-12-19 19:15:54
【问题描述】:

我找到了answer,关于如何使用 powershell 检查当前用户是否具有对文件的读取权限。

如何对目录进行类似的检查? (无需安装额外的模块。)

【问题讨论】:

  • (Get-Acl -Path C:\temp).Access 之类的内容显示给定对象的 ACL。

标签: powershell


【解决方案1】:

不要费心检查访问控制列表。

检查您是否对 any 对象具有读取权限的正确方法是简单明了的。尝试阅读它,并捕获“拒绝访问”错误。

try {
    Get-ChildItem "path\to\that\directory" -ErrorAction Stop
} catch [System.UnauthorizedAccessException] {
    Write-Host "$($_.TargetObject): Access denied"
} catch [System.Management.Automation.ItemNotFoundException] {
    Write-Host "$($_.TargetObject): Path not found"
}

【讨论】:

  • 尝试使用 UNC-Path 会导致 unexpected network error 异常,但仅限于第一次调用。关于如何解决这个问题的任何想法?
  • "UNC 路径" 或 "本地路径" 就Get-ChildItem 而言是相同的,这意味着要么它工作,要么你得到"拒绝访问"/"找不到文件"。 “意外的网络错误”听起来无关紧要,我只能在谷歌上搜索错误消息。
  • @Zulakis 我已经测试了更多,我总是在不允许阅读的 UNC 路径上立即获得 Access is denied。不确定是什么导致了“意外的网络错误”,但不是 UNC 路径。
猜你喜欢
  • 2015-09-04
  • 2016-04-23
  • 2019-12-18
  • 2011-04-20
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
相关资源
最近更新 更多