2014-06-23 160 views
0

我有一個powershell腳本運行並獲得服務器的安全權限,並在csv中輸出這些腳本。目前它輸出的信息,但每個文件它讀取它包括頭帳戶,Ace字符串和對象路徑再次:我如何刪除所以它只顯示在文檔的開始?Powershell腳本輸出csv文件重構

帳戶,王牌字符串,對象路徑 NT AUTHORITY \ SYSTEM,允許FullControl,(繼承),C:\用戶\ munjanga \文檔\ Operations Orchestration的\碼頭 BUILTIN \管理員,允許FullControl,(繼承) ,C:\用戶\ munjanga \文檔\ Operations Orchestration的\碼頭 EMEA \ munjanga,允許FullControl,(繼承),C:\用戶\ munjanga \文檔\ Operations Orchestration的\碼頭 帳戶,王牌字符串,對象路徑 NT AUTHORITY \ SYSTEM,允許FullControl,(繼承),C:\ Users \ munjanga \ Documents \ Operations Orchestration \ jre1.6

$OutFile = "C:\Users\munjanga\Documents\AoN Project\Execute\$([Environment]::MachineName).txt" 
$Header = "Folder Path,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags" 
Del $OutFile 
Add-Content -Value $Header -Path $OutFile 

$RootPath = "C:\Users\munjanga\Documents\Operations Orchestration" 

$Folders = dir $RootPath -recurse | where {$_.psiscontainer -eq $true} 

$isInherited = @{ 
$true = 'Inherited' 
$false = 'Not Inherited' 
} 

$inheritance = @{ 
0 = 'files only' 
1 = 'this folder and subfolders' 
2 = 'this folder and files' 
    3 = 'subfolders and files' 
} 

$fldr = $Folder.FullName 

$Folders | % { 
$fldr = $_.FullName 
Get-Acl $fldr | select -Expand Access | 
select @{n='Account';e={$_.IdentityReference}}, 
    @{n='Ace String';e={"{0} {1}, {2} ({3})" -f $_.AccessControlType, 
     $_.FileSystemRights, $inheritance[$_.InheritanceFlags], 
     $isInherited[$_.IsInherited]}}, 
    @{n='Object Path';e={$fldr}} | ConvertTo-Csv -NoTypeInformation | % {$_ -replace '"', ""} | Out-File $OutFile -Force -Encoding ascii -Append} 
+0

您目前在兩個不同的地方獲得不同的標題。 'Add-Content'這一行是在文件頂部添加'$ Header'值,然後'ConvertTo-Csv'從'Get-Acl'和其後添加額外的頭文件。你想要兩個嗎?或者只是頂部的標題? –

+0

我只想讓文件頂部的標題保留下來,怎麼做?它只是簡單地刪除convertTocsv? – user3738022

回答

0

讓我們來看看,如果這個工程:

@{n='Object Path';e={$fldr}} | ConvertTo-Csv -NoTypeInformation | Select -Skip 1 | % {$_ -replace '"', ""} | Out-File $OutFile -Force -Encoding ascii -Append 

關鍵位是ConvertTo-Csv片後Select -Skip 1

編輯:

通過有點想這經過這裏有一個更好的答案。最後一行應該是這個樣子:

@{n='Object Path';e={$fldr}}} | ConvertTo-Csv -NoTypeInformation | % {$_ -replace '"', ""} | Out-File $OutFile -Force -Encoding ascii -Append 

該循環應該被關閉之前轉換成CSV。

+0

好,所以它擺脫它們,但現在它顯示的標題:文件夾路徑,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags而不是(文件夾,ace路徑和對象路徑) – user3738022

+0

正確的,這是由行2和4在你的代碼中。如果你想改變頭文件,你可以編輯第2行中的'$ Headers'字符串。 –

+0

多數民衆贊成在工作,但現在的「」標記全部回來的文件:( – user3738022