私は3つのCSVファイルにユーザー情報が含まれています。 CSV1は、すべての非アクティブ・ユーザーの「マスター」リストです。 CSV2は現在非アクティブにする必要のあるユーザーのリストで、CSV3はアクティブにする必要のあるユーザーのリストです。2つのCSVファイルを比較し、すべての相違点を書きます
私が望むのは、CSV1/2を比較してすべてのユニークなレコードをCSV1に書き戻すために、別のスクリプト(CSV2/3を作成するスクリプト)から呼び出せるPowerShellスクリプトを用意することです。次に、CSV1/3を比較し、CSV3に存在するCSV1のすべてのレコードを削除します。 CSV2/3は毎日変更することができ、ヘッダー以外のデータは使用できません。
いくつかの固有のフィールドがありますが、私は 'EmployeeID'を比較したいと思います。 3つのCSVファイルにはヘッダーがあります(すべてが同じヘッダーなので、データは一貫しています)。
これまでのところ、CSV2からCSV1にレコードを追加しますが、両方のヘッダーが追加されます。
$ICM= Import-Csv inactiveicmaster.csv -Header 'StudentDistrictID', 'StudentSiteCode', 'StudentLastName', 'StudentFirstName', 'StudentGradeLevel', 'GraduationYr', 'Masterck', 'Homeroom', 'MiddleName', 'Birthday', 'Gender', 'Email'
$IC = Import-Csv csv\inactiveic.csv -Header 'StudentDistrictID', 'StudentSiteCode', 'StudentLastName', 'StudentFirstName', 'StudentGradeLevel', 'GraduationYr', 'Masterck', 'Homeroom', 'MiddleName', 'Birthday', 'Gender', 'Email'
$DIS = Import-Csv csv\disinad.csv -Header 'StudentDistrictID', 'StudentSiteCode', 'StudentLastName', 'StudentFirstName', 'StudentGradeLevel', 'GraduationYr', 'Masterck', 'Homeroom', 'MiddleName', 'Birthday', 'Gender', 'Email'
foreach ($f in $ic) {
$found = $false
foreach ($g in $icm) {
if ($g.StudentDistrictID -eq $f.StudentDistrictID) {
$found = $true
}
}
if ($found -eq $false) {
$icm += $f
if ($f.masterck -eq "") {
$f.masterck = "IM"
}
}
}
<#
foreach ($h in $dis) {
$found = $false
foreach ($g in $icm) {
if ($g.studentdistrictid -eq $h.studentdistrictid) {
$found = $true
}
if ($found -ne $false) {
#don't know what to do here to remove the duplicate
}
}
}
#>
$icm | select * | Export-Csv master.csv -NoTypeInformation
開始するには、Compare-Objectコマンドレットを参照してください。 – EBGreen
-Headerをインポートから削除すると、エクスポートに1つだけ追加されます。 –