4

フォルダとそのすべてのコンテンツのファイルシステムアクセス権を設定するスクリプトを作成しています。

サブフォルダとファイルの両方のすべてのコンテンツに影響を与えるには、.NETドキュメントに従ってContainerInheritとObjectInheritを組み合わせる必要があります。しかし、それを機能させることができず、構文についてもよくわかりません。

サンプルコード:

$ar = new-object System.Security.AccessControl.FileSystemAccessRule(New-Object System.Security.Principal.NTAccount($user),FullControl,ContainerInherit,InheritOnly,Allow)

それはうまくいくので、使用するObjectInheritだけですが、どうすればそれらを組み合わせることができますか?"ContainerInherit,ObjectInherit"文字列と非文字列の引数を混在させることは明らかに許可されていないため、このように引用符とコンマを使用しても機能しません。

-and演算子も使ってみましたが、エラーになります。列挙型を変数($inherit = ContainerInherit,ObjectInherit)に割り当てることも機能しません。

それで、これを行う方法に関するヒントはありますか?

4

2 に答える 2

9

-bor(他の言語の|に類似)を使用してそれらをマージできます。他の回答に示されているように、コンマを使用して文字列から解析することもできます。

サンプル構文も修正しました。このサンプルは機能するはずです。

$if=[Security.AccessControl.InheritanceFlags]
$fsr=[Security.AccessControl.FileSystemRights]
$pf=[Security.AccessControl.PropagationFlags]
$flags = [Security.AccessControl.InheritanceFlags]($if::ContainerInherit -bor $if::ObjectInherit)

$ar = new-object Security.AccessControl.FileSystemAccessRule ((New-Object System.Security.Principal.NTAccount($user)),$fsr::FullControl, $flags, $pf::InheritOnly, "Allow")

しかし、さらに簡単なのは、文字列のみを使用することです。

new-object Security.AccessControl.FileSystemAccessRule ($user, "FullControl", "ContainerInherit,ObjectInherit", "InheritOnly", "Allow")
于 2012-05-03T09:22:01.497 に答える
3

私はコンピューターの前にいませんが、これを試してみてください:

[System.Security.AccessControl.InheritanceFlags]'ContainerInherit、ObjectInherit'

于 2012-05-03T09:09:36.283 に答える