我有一個目錄,其名稱中包含方括號,使得在Powershell中處理它有點問題。我見過有關獲取目錄ACL的建議,應該使用GetAccessControl()
方法DirectoryInfo
而不是使用cmdlet Get-Acl
。使用Powershell的目錄上的GetAccessControl()返回沒有數據
不幸的是,使用GetAccessControl()
不會返回任何目錄的任何結果。看到我的腳本下面。
$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
---- ----- ------
我發現得到$迪的一個實例,用含有方括號的目錄名的唯一方法是逃避支架採用雙背蜱
$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 後安迪·阿里斯門迪報告說,它爲他工作,我建立了GetAccessControl()似乎對PowerShell的2.做工精細感染的機器上運行PowerShell的1.任何想法如何使用Powershell 1解決這個問題?
有趣。我在另一臺機器上嘗試過它,它工作。原始機器運行Powershell v1,並且運行Powershell v2。在兩臺機器上,如果文件名包含方括號,則將$ f傳送給Get-Acl cmdlet不會返回結果。 – 2012-02-23 16:25:09
雖然...在文件名中的單個back-tick會產生相同的結果,但我明顯錯誤地指出了雙重返回。 – 2012-02-23 16:43:01
@RichardFawcett查看這個[bug](https://connect.microsoft.com/PowerShell/feedback/details/544237/filename-bracket-problem)報告。有人發佈了一個解決方法,我將它添加到我的答案中,試試看。 – 2012-02-26 09:22:57