2016-09-13 17 views
0

しか取得できません。スプリットポイントに達するまで .Countプロパティにすべての番号を取得し、CSVアレイを新しいファイルに分割しますこの時点から使用される新しい名前が付いています。何が問題なのでしょうか?Export-CSVはCSVリストにエクスポートしようとすると「Length」

$RootFolder = Get-Content "c:\DRIVERS\myfile.txt" 

foreach ($arrayOfPaths in $RootFolder){ 

    $csv = $arrayofPaths -replace '^\\\\[^\\]+\\([^\\]+)\\([^\\]+).*', 'C:\output\Company_name_${1}_${2}.csv' 
    $csvIndex = 1 
    $maxRows = 1000000 
    $rowsLeft = $maxRows 

    Get-ChildItem $arrayOfPaths -Recurse | Where-Object {$_.mode -match "d"} | ForEach-Object { 
    #$csv = $_.FullName -replace '^\\\\[^\\]+\\([^\\]+)\\([^\\]+).*', 'C:\output\Company_name_${1}_${2}.csv'# <- construct CSV path here 
    $path = $_.FullName 
    $thisCSV = Get-Acl $path | Select-Object -Expand Access | 
    Select-Object @{n='Path';e={$path}}, IdentityReference, AccessControlType, 
        FileSystemRights | 
    ConvertTo-Csv 
if ($thisCSV.count -lt $rowsLeft) { 
    $thisCSV | Export-Csv $csv -append -noType 
    $rowsLeft -= $thisCSV.count 
} else { 
    $thisCSV[0..($rowsLeft - 1)] | Export-Csv $csv -append -noType 
    $csvIndex++ 
    $csv = $csv -replace '\.csv$', "$csvIndex.csv" 
    if ($thisCSV.count -gt $rowsLeft) { 
     $thisCSV[$rowsLeft..($thisCSV.count - 1)] | Export-Csv $csv -append -noType 
    } 
    $rowsLeft = $maxRows - ($thisCSV.count - $rowsLeft) 
} 


    } 

} 
+1

[MCVE](http://stackoverflow.com/help/mcve)の作成を検討し、問題を示すサンプル入力を提供してください。今のところ、コードの壁はファイルからコンテンツを読み込むことを前提としています。実際の問題に関しては関係のないことがたくさんあります。 – vonPryz

答えて

0

Export-CSVは、PSCustomObjectsを入力として受け取り、テキスト行ではないように構築されています。

#TYPE Selected.System.Security.AccessControl.FileSystemAccessRule 
"Path","IdentityReference","AccessControlType","FileSystemRights" 
"c:\test","BUILTIN\Administrators","Allow","FullControl" 

少なくとも3行、文字列の配列:

$thisCSV = Get-Acl $path | Select-Object -Expand Access | 
    Select-Object @{n='Path';e={$path}}, IdentityReference, AccessControlType, 
        FileSystemRights | 
    ConvertTo-Csv 

このラインの出力は次のようになります。文字列の配列にはどのようなプロパティがありますか?

PS C:\> 'a','b' | Get-Member -MemberType Property 


    TypeName: System.String 

Name MemberType Definition  
---- ---------- ----------  
Length Property int Length {get;} 

長さ。 Export-CSVはすべてのプロパティをエクスポートしているため、CSVに表示される唯一のプロパティです。これが唯一のプロパティです。

修正:Get-ACL行から| ConvertTo-CSVを削除し、カスタムオブジェクトをカスタムオブジェクトのままにして、エクスポートハンドルでそれらを変換するようにします。

(これは、毎回1行以上のデータをエクスポートしようとしているときに3行以上のテキストをカウントしていないため、カウントも修正されるはずです)。

+0

非常にうまく動作します – Arbelac

関連する問題