我有一个名称包含方括号的目录,这使得在 Powershell 中处理它有点问题。我已经看到建议要获取目录的 ACL,您应该使用GetAccessControl()
方法DirectoryInfo
而不是使用 cmdlet Get-Acl
。
不幸的是, usingGetAccessControl()
不会为任何目录返回任何结果。请参阅下面的脚本。
$filename = "C:\somefolder"
$di = get-item $filename
$di | get-acl # this returns the correct ACL data as expected
$di.GetAccessControl() # this shows an empty ACL (see below output)
我所说的空 ACL 的意思是:
Path Owner Access
---- ----- ------
我发现获得具有包含方括号的目录名称的 $di 实例的唯一方法是用双反引号转义括号
$filename = "C:\some``[folder``]withsquarebrackets"
如果我这样做然后执行$di = get-item $filename
,则$di
表明它包含指定文件夹的详细信息。但在这种情况下,其余两行会返回不同的结果:
$di | get-acl # does nothing, doesn't even show an empty ACL
$di.GetAccessControl() # shows an empty ACL as seen above
谁能解释我如何可靠地获取用于枚举文件夹的 ACL,其中一些文件夹的名称中包含方括号?
更新 2012-02-23 16:31Z 在 Andy Arismendi 报告它对他有用之后,我确定 GetAccessControl() 在 Powershell 2 上似乎工作正常。受影响的机器运行 Powershell 1。任何想法如何使用 Powershell 1 解决这个问题?