Get-Aclで取得したファイル・フォルダのアクセス権(FileSystemRights)が、数字表記される
- 参考:Retrieving security descriptor and getting number for FileSystemRights
Get-Aclで取得したファイル・フォルダのアクセス権(FileSystemRights)が、数字表記される場合があります。 (“FullControl"とかではなく、"2147483648"とか表記されるものがある)

数字で表記されるのはなぜかというと、
システム側でファイルやフォルダのアクセスマスク(32ビット、2進数)
に、上位ビット(Generic Access Mask)を設定しているためのようです。
アクセスマスクについては、下記リンクをご参照ください。
How Permission work
Access Mask Format
Get-aclコマンドレットでは、
FilesystemRightsプロパティを参照します。
FileSystemRightsプロパティは、
上記リンク中のアクセスフォーマットにおける、
下位ビット(Standard Access Rights と Object-Specific Access Rights)
の設定値のみ、対応する文字列(“FullControl"など)にして出力しています。
よって、上位ビット(Generic Access Mask)が存在する場合は対応する文字列がないため、
32ビットのアクセスマスクを10進数にした値を返します。
上位ビット(Generic Access Mask)に変更を加えるのは、
GUIからできなそうなので、調査・説明を割愛します。
Creator Owner に付いているので、
システム側で自動設定してそうな気がします。
使い所は「?」ですが、諸々あり、
Get-Aclで取得したファイル・フォルダのアクセス権が数字表記された場合に、
対応するアクセス権に変換するスクリプトを作成してみました。
第一引数に出力された10進数を入れると、対応するアクセス権限を表示します。
参考URL全て
create ownerという特殊グループの説明
Retrieving security descriptor and getting number for FileSystemRights
How Permission work
Access Mask Format
Win32_ACE class
FileSystemRights 列挙型
PowerShell/PowerShellで2進数、10進数、16進数を変換する方法
アクセス制御リストACL (基礎概要部分)
Windows Installer で配置する resources の DACL を変更する方法
Windows ACE の AccessMask(マスク)ビットフラグの対応関係
おわり
【Powershell】ヒアドキュメント内の改行は、(CR+LF) ではなく、(LF) になっているようである。
1. 変数 $a にヒアドキュメントを格納

2. 変数 $a を c:¥a.txt にファイル出力

3. c:¥a.txt を gc (Get-Content) コマンドレットで読み込み

4. メモ帳アプリで c:¥a.txt を開いてみたところ、改行されていない
ヒアドキュメント内での改行は ラインフィード (LF) として処理されている?

5. 検証のため、
キャリッジリターン (CR) を表す特殊文字 「`r」を改行直前に入れてみた

6. 変更した $a を再び c:¥a.txt にファイル出力(上書き)し、
gc (Get-Content) コマンドレットで読み込んだところ、
4444の最後で改行されているのがわかる

7. メモ帳アプリで c:¥a.txt を開いてみたところ、改行されている

8. gc (Get-Content) は (LF) だけで改行として読み込んでいることを確認するため
ラインフィード (LF) を表す特殊文字「`n」を使って aaa を4回、c:¥b.txt に出力した

9. メモ帳で開くと改行されていないことがわかる

end