1

サーバー上のすべてのフォルダのフォルダ情報とセキュリティ情報を取得しようとしています。しかし、私はここでPowershellに精通していません。初心者を助ける気ですか?

セキュリティACLをテキストファイルにパイプする方法を教えてください。フォルダ名、サイズ、サブフォルダ数のメンバーオブジェクトだけでなく?

# Step 1 Get Folder Path 
function Select-Folder($message='Select a folder', $path = 0) { 
    $object = New-Object -comObject Shell.Application  

    $folder = $object.BrowseForFolder(0, $message, 0, $path) 
    if ($folder -ne $null) { 
        $folder.self.Path 
    } 
} 


#Step 2:Search For Directories
$dirToAudit = Get-ChildItem -Path (Select-Folder  'Select some folder!') -recurse | Where {$_.psIsContainer -eq $true}

foreach ($dir in $dirToAudit)
{

#Step 3: Output: [Folder Path, Name, Security Owner, Size, Folder Count]
#Pipe To CSV Text File
    Get-Acl -Path $dir.FullName | Select-Object PSPath, Path,Owner | export-csv C:\temp\SecurityData.csv
    #I also want the Folder path, Size and SubFolder Count
}


#Step 4: Open in Excel 
invoke-item -path C:\temp\SecurityData.csv

このテーマで役立つと思ったサイトは次のとおりです。http://blogs.msdn.com/b/powershell/archive/2007/03/07/why-can-ti-pipe-format-table-to-export-csv -and-get-something-useful.aspx

http://www.maxtblog.com/2010/09/to-use-psobject-add-member-or-not/

4

1 に答える 1

2

この作業は特に簡単ではありません。まず、必要なプロパティを含むカスタムオブジェクトを作成します。これらのプロパティは、次のようなさまざまなコマンドを介して追加されます。

$objs = Get-ChildItem . -r | 
            Where {$_.PSIsContainer} | 
            Foreach {new-object psobject -prop @{Path=$_.FullName;Name=$_.Name;FolderCount=$_.GetDirectories().Length}}
$objs = $objs | Foreach { Add-Member NoteProperty Owner ((Get-Acl $_.Path).Owner) -Inp $_ -PassThru}

$objs | Export-Csv C:\temp\data.csv

フォルダサイズを取得するには、計算に余分な作業が必要になります。

于 2012-10-18T17:15:31.873 に答える