Я просмотрел множество примеров и добился прогресса в составлении отчета об изменениях. Но я застрял в одной области. Вот сценарий...
File 1 CSV file sample data
ID,Name,Location,Gender
1,Peter,USA,Male
2,Paul,UK,Male
3,Mary,PI,Female
File 2 CSV file sample data (No ID column)
Name,Location,Gender
Peter,USA,Female
Paul,UK,Male
Mary,USA,Female
Tom,PI,Female
Barry,CAN,Male
В файле 2 есть изменения и дополнения, т.е. Питер стал женщиной, Мэри переехала в США, и Том, и Барри — новые люди. Выходной файл отчета об изменениях содержит сведения об изменениях. Проблема в том, что я не могу понять, как получить идентификаторы Питера и Мэри из файла 1 в отчет об изменениях. ID всегда пуст Вот мой код... (Надеюсь, кто-то может пролить свет. Заранее спасибо.)
$MyCSVFields = @('Name','Location','Gender')
$CompareResults = Compare-Object $RefObj $DffObj -Property $MyCSVFields -IncludeEqual
$NewOrChangedData = @()
Foreach($Row in $CompareResults)
{
if( $Row.SideIndicator -eq "=>" )
{
$TempObject = [pscustomobject][ordered] @{
ID = $Row.ID
Name = $Row.Name
Location = $Row.Location
Gender = $Row.Gender
#Sanity check "Compare Indicator" = $Row.SideIndicator
}
$NewOrChangedData += $TempObject
}
}
Спасибо Тео за понимание того, как использовать Where-Object. Вот обновленный код, который делает его простым для начинающих и все еще работает для нас.
Foreach($Row in $CompareResults)
{
if( $Row.SideIndicator -eq "=>" )
{
$myOrgID = $RefObj | Where-Object Name -eq $Row.Name
$TempObject = [pscustomobject][ordered] @{
ID = $myOrgID.ID
Name = $Row.Name
Location = $Row.Location
Gender = $Row.Gender
#Sanity check "Compare Indicator" = $Row.SideIndicator
}
$NewOrChangedData += $TempObject
}
}