2016-09-14 4 views
1

私は、ファイルのアクセス権の基本的な監査を取得するには、次のスクリプトを実行して検索しますもの:PowerShellのからシステムアカウントを削除する方法には、Get-ChildItemコマンドレットは

Path   : E:\Path\To\Files 
AccessToString : BUILTIN\Administrators Allow FullControl 
       NT AUTHORITY\SYSTEM Allow FullControl 
       <Domain>\<Group1> Allow FullControl 
       <Domain>\<Group2> Allow FullControl 

どのように私は結果からBUILTINNT AUTHORITY\SYSTEMを取り除くことができますか?データがテキストファイルに保存されると、Excelで解析することができますが、PSを最初に削除するとレポートが効率的になります。

答えて

2

一般的には、出力フォーマッタ(Format-...)を使って物を実行しないでください。後でそれらを使って何かを行うことができると期待しています。本当は画面に情報を表示する最後のステップですフィールドを切り捨てる、ラップする、そして一般的には他のプログラムにフィードするのには不向きです。

出力、その後、一度ACLごとの各パスExcelが合理的にCSVを読み込むので、私はACLを分割し、これを変更した、最初のBUILTINおよびNT AUTHORITY行をフィルタリング:出力形式

Get-ChildItem -Directory E:\*,E:\*\*,E:\*\*\* | Get-Acl | ForEach-Object { 

    $path = Convert-Path $_.Path; 

    $AccessStrings = ($_.AccessToString -split "`n") | Where-Object { $_ -notmatch 'BUILTIN|NT AUTHORITY' } 

    $AccessStrings | Select-Object @{Name='Path';Expression={$Path}}, 
            @{Name='AccessToString';Expression={$_}} 

} | Export-Csv -Path out.csv -NoTypeInformation 

をすべきです

Path,AccessToString 
"e:\file1.txt","DOMAIN\group1 fullcontrol" 
"e:\file1.txt","DOMAIN\group2 fullcontrol" 

などのようになりますので、パスが複数回表示されることがあります。これは、Excelの形状に適しているようです。

'BUILTIN|NT AUTHORITY'は正規表現のテキストマッチで、|を使用して/またはいずれかに一致します。

+1

これは完璧でした、ありがとうございました!私はすべての出力を配管しなくてはならず、実際に必要なときにこれを動作させるためのコードを実際に書く必要があったと思います。 – Tensigh

関連する問題