いくつかのPowerShellコマンドから必要な出力を取得するのに問題があります。ホームディレクトリのクリーンアップに役立つPowerShellスクリプトを作成しています。ディレクトリのアクセス許可を取得し、ディレクトリの名前とアクセス権を持つユーザーが一致していることを確認する必要があります。
Get-Acl関数を使用していますが、追加のデータがたくさんあります。理論的には、これらのディレクトリのファイル権限には所有者として管理者が必要であり、アクセスの下にリストされているのはユーザーだけである必要があります。
PS C:\> Get-Acl "\\fs1\home\e55555"
Directory: \\fs1\home
Path Owner Access
---- ----- ------
e55555 BUILTIN\Administrators DOM\e55555 Allow ...
アクセスしているものを除いて、すべてを除外したいと思います。配管してみました| [アクセス]を選択しますが、同じ出力が得られません。
UserID以外にも追加情報があるので、ファイルに書き込んで必要なものを「grep」してみることができると思いました。グーグルと実験を通して、解析しやすいと感じた出力が得られました。コマンドと出力は次のとおりです。
PS C:\> $test = Get-Acl \\fs1\home\\e55555 | Select-Object -ExpandProperty Access
| select IdentityReference
IdentityReference
-----------------
DOM\e55555
NT AUTHORITY\SYSTEM
BUILTIN\Administrators
NT AUTHORITY\Authenticated Users
正規表現を使用して目的の行を見つけようとしましたが、試したもののどれも出力を提供しませんでした。以下のコマンドのさまざまなバリエーションを試し、変数の代わりにファイルを解析してみました。
echo $test | Select-String -pattern "^DOM"
[regex]::matches($test,"^DOM")
では、get-aclコマンドで出力を削減するにはどうすればよいですか?また、追加のデータなしでDOMで始まる行を「grep」するにはどうすればよいですか?