フォルダのアクセス権を取得し、一意のIdentityReferenceのみを選択して単純な関数を適用しようとするPowerShellスクリプトがあります。しかし、何らかの理由でそれが機能していない。Powershell:フォルダのユニークなアクセス許可を取得し、それぞれに関数を適用します。
@{IdentityReference=NT AUTHORITY\SYSTEM}
@{IdentityReference=BUILTIN\Administrators}
@{IdentityReference=COMP1234\PCUser}
:私は書き込み出力にそれが出力する第2の時間を行うときにのみ
私は2つの異なるアプローチを試してみました
function display_perm {
param([String] $p)
Write-Output $p
}
$acl = $(Get-Acl "folderpath").Access
# Method 1
$perm = $acl | select -Unique IdentityReference | %{ display_perm $_ }
#write-output $perm
# Method 2
foreach($p in $perm) { display_perm $p }
私のスクリプトは、方法1は、自分自身ではない何も出力しません方法2は上記と同じものを出力しますが、一度に1つずつ出力します。
私がしたいことはパイプライン、あるいはforeachのを経由して、個々のアイデンティティの参照を渡すことです大丈夫だと思うが、私はこの@ {}ものは多分それはオブジェクトを意味しているが、どのように、私は次の出力を得るのですかを理解していない:
Permission 1 : NT AUTHORITY\SYSTEM
Permission 2 : BUILTIN\Administrators
Permission 3 : COMP1234\PCUser
権限文字列を関数に渡し、上記のように文字列として表示したいとします。
値 ----- NT AUTHORITY \ SYSTEM BUILTIN \管理者、どのように私は-----値を取り除くか、ちょうどあなたが値を参照する必要があります –
個々の値を表示、変更することができます最後の行は '(display_perm 'c:\ temp').IdentityReference.Value'です。 –