心のぼやき

心のぼやき

Get-Aclで取得したファイル・フォルダのアクセス権(FileSystemRights)が、数字表記される

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

f:id:yamatetsu020752:20170917130207p:plain

数字で表記されるのはなぜかというと、
システム側でファイルやフォルダのアクセスマスク(32ビット、2進数)
に、上位ビット(Generic Access Mask)を設定しているためのようです。
アクセスマスクについては、下記リンクをご参照ください。



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進数を入れると、対応するアクセス権限を表示します。

qiita.com

参考URL全て

おわり

【Powershell】ヒアドキュメント内の改行は、(CR+LF) ではなく、(LF) になっているようである。

 

1. 変数 $a にヒアドキュメントを格納 

f:id:yamatetsu020752:20170811004756p:plain

 

 

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

f:id:yamatetsu020752:20170811004901p:plain

 

 

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

f:id:yamatetsu020752:20170811005003p:plain

 

 

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

    ヒアドキュメント内での改行は ラインフィード (LF) として処理されている?

f:id:yamatetsu020752:20170811002956p:plain

 

 

 

5. 検証のため、

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

f:id:yamatetsu020752:20170811012106p:plain

 

 

6. 変更した $a を再び c:¥a.txt にファイル出力(上書き)し、

    gc (Get-Content) コマンドレットで読み込んだところ、

    4444の最後で改行されているのがわかる

f:id:yamatetsu020752:20170811012131p:plain

 

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

f:id:yamatetsu020752:20170811012726p:plain

 

 

 

8. gc (Get-Content) は (LF) だけで改行として読み込んでいることを確認するため

   ラインフィード (LF) を表す特殊文字「`n」を使って aaa を4回、c:¥b.txt に出力した

f:id:yamatetsu020752:20170811123622p:plain

 

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

f:id:yamatetsu020752:20170811124012p:plain

 

 

 

 

 

end