2012-10-18 6 views
0

서버의 모든 폴더에 대한 폴더 정보 및 보안 정보를 가져 오려고합니다. 하지만 Powershell에 익숙하지 않습니다. 초보자를 돕는 마음?여러 명령을 CSV 파일로 파이프하는 방법 [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-t-i-pipe-format-table-to-export-csv-and-get-something-useful.aspx

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

답변

1

이 작업은 특히 쉬운 일이 아닙니다. 먼저 원하는 속성이 포함 된 사용자 지정 개체를 만들려고합니다. 이러한 속성은 계산하기 위해 몇 가지 추가 작업을 할 폴더의 크기를 얻기 다른 명령 예컨대 :

$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 

를 통해 추가됩니다.

+0

그래서 PSobject는 해시 테이블 데이터 형식입니까? –

+0

도움을 다시 한번 감사드립니다! –

+1

PSObject를 사용하여 사용자 지정 개체를 만들 수 있습니다. 즉, 개체에 속성과 메서드를 추가 할 수 있습니다. 또한 레코드 또는 구조체를 만드는 방법으로 생각할 수도 있습니다. –

관련 문제