12

私はpowershellが初めてなので、スクリプトはサイトからのさまざまな例のフランケンシュタインです。

私の質問は、DataTable 用に作成している csv ファイルが、指定した列の順序を保持していることを確認するにはどうすればよいですか?

私のスクリプトはこれを行い、csv ヘッダーと値を次のように入力します。

...snip...
$dataTable | ForEach-Object {
            $csv+=New-Object PSObject -Property @{
                program_code=$_.ProgramCode;
                first_name=$_.FirstName;
                last_name=$_.LastName;
                email=$_.email;
                phone=$_.phone;
                phone2=$_.otherphone;
                address=$_.addr1;
                address2=$_.addr2;
                city=$_.city;
                state=$_.state;
                postal_code=$_.Zip;
                country=$_.Country;
                grad_year=$_.HsGradDate;
                lead_date=$_.LeadDate;
                lead_source=$_.LeadSource;
                school_status=$_.SchoolStatus;
        }
        }
    $csv | Export-CSV C:\scripts\NewLeads$(Get-Date -Format yyyyMMdd).csv -notype -Append
...snip...

スクリプトで指定した順序でファイルを列にする必要がありますが、メモ帳または Excel でファイルを開くと、一見ランダムな順序で列が表示されます。キーワードは、自分自身を注文する何らかの方法を持っている可能性があるため、一見したところです。

4

2 に答える 2

10

必要な順序でフィールドを選択し、エクスポートします。

$csv | select-object -property program_code,first_name,last_name,email,phone,phone2,address,address2,city,state,psotal_code,country,grad_year,lead_date,lead_source,school_status |
Export-CSV C:\scripts\NewLeads$(Get-Date -Format yyyyMMdd).csv -notype -Append

ただし、これを少し短絡できる場合があります。実際の内容によって$dataTableは、(ほとんどの場合) そのオブジェクトから直接選択して、 のコレクションの作成をバイパスできる場合がありますPSObjects。ただし、カスタム ヘッダーが必要な場合は、select-object(読みやすくするための改行) で式を使用する必要があります。

$dataTable| select-object @{Name="program_code";Expression={$_.ProgramCode}},`
@{Name="first_name";Expression={$_.firstname}},`
@{Name="last_name";Expression={$_.lastname}},email,phone,`
@{Name="phone2";Expression={$_.otherphone}},`
@{Name="addr1";Expression={$_.address}},`
@{Name="addr2";Expression={$_.address2}},city,state,`
@{Name="postal_code";Expression={$_.zip}},country,`
@{Name="grad_year";Expression={$_.hsgraddate}},`
@{Name="lead_date";Expression={$_.leaddate}},`
@{Name="lead_source";Expression={$_.leadsource}},`
@{Name="school_status ";Expression={$_.schoolstatus }}|
 Export-CSV C:\scripts\NewLeads$(Get-Date -Format yyyyMMdd).csv -notype -Append
于 2013-09-25T20:52:45.217 に答える