我不知道如何将字符串附加到CSV。我在做什么:
我有两个csv文件。一个包含主机名和ID列表,另一个包含主机名和一些数字列表。
示例文件1:
主机名| ID
IWBW140004 | 3673234
IWBW130023 | 2335934
IWBW120065 | 1350213
示例文件2:
ServiceCode |主机名| ID
4 | IWBW120065 |
4 | IWBW140004 |
4 | IWBW130023 |
现在我在二维数组中读取文件1的内容:
$pcMatrix = @(,@())
Import-Csv $outputFile |ForEach-Object {
foreach($property in $_.PSObject.Properties){
$pcMatrix += ,($property.Value.Split(";")[1],$property.Value.Split(";")[2])
}
}
然后我阅读文件2的内容并将其与我的数组进行比较:
Import-Csv $Group".csv" | ForEach-Object {
foreach($property in $_.PSObject.Properties){
for($i = 0; $i -lt $pcMatrix.Length; $i++){
if($pcMatrix[$i][0] -eq $property.Value.Split('"')[1]){
#Add-Content here
}
}
}
}
我需要做什么,将$ pcMatrix [$ i] [1]附加到行ID中文件2中的活动列?
感谢您的建议。
Yanick
答案 0 :(得分:3)
您似乎过于复杂化了一项非常简单的任务。
如果我理解正确,您希望填充文件2中的ID列,其ID与文件1中的正确主机名相对应。最简单的方法是填充第一个文件中的所有值进入HashTable并使用它来查找第二个文件中每行的ID:
# Read the first file and populate the HashTable:
$File1 = Import-Csv .\file1.txt -Delimiter "|"
$LookupTable = @{}
$File1 |ForEach-Object {
$LookupTable[$_.Hostname] = $_.ID
}
# Now read the second file and update the ID values:
$File2 = Import-Csv .\file2.txt -Delimiter "|"
$File2 |ForEach-Object {
$_.ID = $LookupTable[$_.Hostname]
}
# Then write the updated rows back to a new CSV file:
$File2 | Export-CSV -Path .\file3.txt -NoTypeInformation -Delimiter "|"