名前に角括弧が含まれているので、Powershellで扱うのに少し問題があります。ディレクトリのACLを取得するには、Get-Acl
コマンドを使用する代わりにDirectoryInfo
のGetAccessControl()
メソッドを使用する必要があります。Powershellを使用しているディレクトリのGetAccessControl()はデータを返しません
残念ながら、GetAccessControl()
を使用すると、どのディレクトリでも結果が返されません。以下のスクリプトを参照してください。
Path Owner Access
---- ----- ------
私は角括弧が含まれているディレクトリ名を$ジのインスタンスを取得するために見つけた唯一の方法は脱出することです:私は空のACLによって意味することはこれです
$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)
ダブルバックティック
$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:アンディArismendiは、それが彼のために働いていたと報告した後31Zは、私はGetAccessControl()が影響を受けたマシンがどのようにPowerShellの1.任意のアイデアを実行するPowerShellの2で正常に動作するようことを確立 Powershell 1を使用してこれを解決しますか?
興味深い。私は別のマシンでそれを試して、それは動作します。元のマシンはPowershell v1を実行しており、動作しているマシンはPowershell v2を持っています。どちらのマシンでも、ファイル名に角カッコが含まれている場合、$ fをGet-Aclコマンドレットにパイプしても結果は返されません。 –
私は明らかにダブルバックティックについて間違っていましたが...ファイル名に1つのバックティックが同じ結果をもたらします。 –
@RichardFawcettこの[バグ](https://connect.microsoft.com/PowerShell/feedback/details/544237/filename-bracket-problem)レポートをご覧ください。誰かが回避策を投稿した、私はそれを私の答えに加え、試してみてください。 –