PowerShellのGet-Aclで角括弧[]を含むフォルダ・ファイルのアクセス許可情報する方法 †Windows 7にデフォルトインストールされているPowerShellのバージョンは2.0になります。 追記 †手元にあるマシン(Windows10)にインストールされている、PowerShell5.0のGet-Aclには、以下の通り-LiteralPathオプションが使用可能です。 PS E:\> Get-Help Get-Acl 名前 Get-Acl 構文 <省略> Get-Acl [-LiteralPath <string[]>] [-Audit] [-AllCentralAccessPolicies] [-Filter <string>] [-Include <string[]>] [-E xclude <string[]>] [-UseTransaction] [<CommonParameters>] したがって、-LiteralPathオプションをサポートしているPowerShellバージョン(Get-Aclコマンドレット)であれば、以下に紹介するような記述は不要です。 e.g. Get-Acl -LiteralPath [test] 関連記事 †PowerShell2.0で角括弧[]を含むフォルダ・ファイルのアクセス許可情報を取得してみる †以下のようにすれば、角括弧を含むフォルダやファイルのアクセス許可設定情報を取得することができます。 実行例を記すため、E:\に[test]フォルダを作成します。 PS E:\> mkdir [test] ディレクトリ: E:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2016/03/14 20:00 [test] 失敗する実行例(PowerShell2.0) †PowerShell2.0には、-LiteralPath がないので、普通にGet-Aclコマンドレットを実行してみます。 PS E:\> Get-Acl [test] PS E:\> Get-Acl "[test]" PS E:\> Get-Acl '[test]' 何も返却されません。 Windows10のPowerShell5.0で-LiteralPathをつけて実行(成功例) †PowerShell5.0には、LiteralPathオプションがあるので、このオプションを指定して実行すると成功します。 PS E:\> Get-Acl -LiteralPath [test] ディレクトリ: E:\ Path Owner Access ---- ----- ------ [test] TPE430\Sakura Everyone Allow FullControl 成功する実行例(PowerShell2.0) †Get-Itemコマンドレットに-LiteralPathオプションと[test]フォルダを指定します。 PS E:\> $d = Get-Item -LiteralPath [test] PS E:\> $d.GetAccessControl() Path Owner Access ---- ----- ------ TPE430\Sakura Everyone Allow FullControl 一行で記述する場合は以下のようになります。 PS E:\> (Get-Item -LiteralPath [test]).GetAccessControl() Path Owner Access ---- ----- ------ TPE430\Sakura Everyone Allow FullControl 注意点として、Pathが空になっています。 尚、Get-ChildItemコマンドレットで複数のファイルやディレクトリを取得し、foreachなどでループする場合は、"$_"のように"で囲めばよいでしょう。 以上、PowerShell2.0のGet-Aclコマンドレットに-LiteralPathオプションがないため、Get-ItemとGetAccessControl()メソッドを使用してアクセス許可設定を取得方法でした。 |