そこにあるすべての例で、あなたは私が私の解決策を見つけることができたと思うでしょう. :-)
とにかく、2 つの csv ファイルがあります。1 つは 2 列、もう 1 つは 4 です。powershell を使用して、それぞれの列から 1 つの列を比較する必要があります。私はそれを理解したと思っていましたが、結果を比較すると、真実であるべきだとわかっているのに偽として戻ってきました。これが私がこれまでに持っているものです:
$newemp = Import-Csv -Path "C:\Temp\newemp.csv" -Header login_id, lastname, firstname, other | Select-Object "login_id"
$ps = Import-Csv -Path "C:\Temp\Emplid_LoginID.csv" | Select-Object "login id"
If ($newemp -eq $ps)
{
write-host "IDs match" -forgroundcolor green
}
Else
{
write-host "Not all IDs match" -backgroundcolor yellow -foregroundcolor black
}
最初のファイルにはヘッダーがないため、ヘッダーを指定する必要がありました。奇妙なのは、各変数を呼び出して、それが何を保持しているかを確認できることです。最終的には同じ情報になりますが、何らかの理由でまだ false になります。これは、行が 1 つしかない場合でも発生します (ヘッダー行は数えません)。
それらを配列として解析し始めましたが、それが正しいことであるかどうかはよくわかりませんでした。重要なのは、最初のファイルの行 1 と 2 番目のファイルの行 1 を比較することです。単純な -match または -contains を実行することはできません。
編集: 厄介なことの 1 つは、変数がヘッダー行も保持しているように見えることです。それぞれを呼び出すと、ヘッダーが表示されます。しかし、両方の変数を呼び出すと、ヘッダーは 1 つしか表示されず、行は 2 つ表示されます。
次のチェックを追加しましたが、同じ結果が得られました (すべて False)。
$results = Compare-Object -ReferenceObject $newemp -DifferenceObject $ps -PassThru | ForEach-Object { $_.InputObject }