オブジェクトに基づいてエントリを重複排除する必要があるパイプ区切りのフラット ファイルがあります。具体的には、ファイルの一部は次のとおりです。
"001A"|"1"|"*"||"A"|"504367667"|"1"|"2005-06-10-16.57.23.000000"|
"001A"|"1"|"*"||"A"|"504367667"|"1"|"2005-10-24-16.52.29.000000"|
"001A"|"1"|"*"||"A"|"504367667"|"1"|"2007-12-13-15.48.47.000000"|
"001A"|"1"|"*"||"A"|"504367667"|"1"|"2008-12-09-17.10.39.000000"|
"001B"|"1"|"*"||"B"|"800026800"|"1"|"2005-08-08-10.48.16.000000"|
"001C"|"1"|"*"||"C"|"490349139"|"1"|"2006-01-19-12.03.08.000000"|
"001C"|"1"|"*"||"C"|"490349139"|"1"|"2009-03-12-15.08.11.000000"|
最初のフィールドは ID で、最後のフィールドはタイムスタンプです。ID ごとに最新のタイムスタンプ エントリのみが保持されるように、エントリの重複を排除したいと考えています。したがって、必要な出力は次のようになります。
"001A"|"1"|"*"||"A"|"504367667"|"1"|"2008-12-09-17.10.39.000000"|
"001B"|"1"|"*"||"B"|"800026800"|"1"|"2005-08-08-10.48.16.000000"|
"001C"|"1"|"*"||"C"|"490349139"|"1"|"2009-03-12-15.08.11.000000"|
ファイルを読み取り、エントリを個別のオブジェクト名で配列に保存してから、試しました
$inputdeduped = $inputfilearray | Sort-Object Date
$inputdeduped = $inputdeduped | Select-Object ID -Unique
日付がソートされると、ここで -unique として使用される get-unique コマンドレットが、ソートされた配列内の重複したエントリの最初または最後のいずれかを選択することを期待して、降順または昇順で日付をソートしますが、そうではなく、ランダムに 1 つのエントリを選択します。
get-unique コマンドレットがどのように機能するかを理解するのを手伝ってください。