Существует несколько способов связать 2 (или более) набора данных, но, вероятно, наиболее распространенным в PowerShell является поиск общего и уникального свойства и использование таблиц ha sh для связи одного с другим.
Если у вас есть модуль ImportExcel; Вот простой пример, основанный на несколько ограниченной информации, которую вы предоставили:
Я создал:
FileA:
ID Text1 Tex2
1 something1.1 something2.1
2 something2.1 something2.2
FileB:
ID Text3
1 SoemthingElse
2 SomethingElse2
$FileA = 'c:\temp\fileA.csv'
$FileB = 'c:\temp\fileB.csv'
$MergeFile = 'c:\temp\FileA_BMerged.xlsx'
$FileB_Hash = @{}
# Create a hash table from the data in FileB indexed on the ID column.
Import-Csv -Path $FileB |
ForEach-Object{ $FileB_Hash.Add( $_.ID, $_) }
# Now Import FileA via Import-Csv and correlate the data using the ID to tie the
# 2 sets together.
#
# Notice the use of Select-Object with a calculated property.
Import-Csv -Path C:\temp\FileA.csv |
Select-Object *,@{Name = 'Text3'; Expression = { $FileB_Hash.($_.ID).Text3 } } |
Export-Excel -Path $MergeFile
Export-Excel - последняя и наименее неясная часть, которая просто берет созданные объекты ранее на этапах конвейера и вывода их на лист Excel.
Вы должны быть чувствительны к именам полей. Убедитесь, что ваши ключи уникальны, иначе вам придется обращаться с ними по-другому. Основной принцип c - когда вы сталкиваетесь с идентификатором в первой коллекции, вы можете использовать его для простой ссылки на объект во втором наборе, а затем использовать эти данные для расширения данных в первом.
Мы можем смешивать это по-разному, в том числе не использовать либо установить в качестве основы и просто создать коллекцию PSCustomObjects. Однако основной принцип должен быть похожим.
Пожалуйста, попробуйте и дайте мне знать, как это происходит.