【发布时间】:2014-05-12 18:17:28
【问题描述】:
我有 2 个要合并的对象,但似乎找不到解决方案
Messages Name Error
-------- ---- -----
{\\APPS-EUAUTO1\C$\Users\xautosqa\AppDa... test 1 True
{[APPS-EUAUTO1] [prep] Setting agent op... test 2 False
TestPlan Script TestCase TestData ErrorCount ErrorText DateTime Elapsed
-------- ------ -------- -------- ---------- --------- -------- -------
D:\XHostMach... D:\XHostMach... rt1 1,\a\"" 1 [#ERROR#][AP... 2014-03-28 1... 0:00:18
D:\XHostMach... D:\XHostMach... rt2 1,\a\"" 0 2014-03-28 1... 0:00:08
我试过了:
function Join-Object {
Param(
[Parameter(Position=0)]
$First
,
[Parameter(Position=1,ValueFromPipeline=$true)]
$Second
)
BEGIN {
[string[]] $p1 = $First | gm -type Properties | select -expand Name
}
Process {
$Output = $First | Select $p1
foreach($p in $Second | gm -type Properties | Where { $p1 -notcontains $_.Name } | select -expand Name) {
Add-Member -in $Output -type NoteProperty -name $p -value $Second."$p"
}
$Output
}
} # End: Function Join-Object
$TestCases = Join-Object $TxtTestcases $RexTestcases | Select Name, TestPlan, TestCase, Script, TestData, Error, ErrorCount, ErrorText, Messages, DateTime, Elapsed
但第二个对象不存在:
Name TestPlan TestCase Script TestData Error ErrorCount ErrorText Messages DateTime
---- -------- -------- ------ -------- ----- ---------- --------- -------- --------
test 1 True {\\APPS-...
test 2 False {[APPS-E...
我也试过了:
Function Merge-Testcase {
Param ($TxtTestcase, $RexTestcase)
$Fields = @{
Name = $TxtTestcase.Name
TestPlan = $RexTestcase.TestPlan
TestCase = $RexTestcase.TestCase
Script = $RexTestcase.Script
TestData = $RexTestcase.TestData
IsError = $TxtTestcase.Error
ErrourCount = $RexTestcase.ErrorCount
ErrorText = $RexTestcase.ErrorText
Messages = $TxtTestcase.Messages
DateTime = $RexTestcase.DateTime
Elapsed = $RexTestcase.Elapsed
}
New-Object PSObject -Property $Fields | ConvertTo-Csv -NoTypeInformation
} # End: Function Merge-Testcase
$TestCases = Merge-Testcase -TxtTestcase $TxtTestcases -RexTestcas $RexTestcase
$TestCases | Format-Table
但我得到了这个
"Script","Name","TestCase","TestPlan","ErrorText","TestData","ErrourCount","IsError","Elapsed","DateTime","Messages"
,,,,,,,,,,
知道如何连接这两个对象吗?
【问题讨论】:
-
好问题 - 我发布了一个包含两个潜在解决方案的答案。我想你会喜欢第二个的:)
-
我可以发誓我在 4 或 5 天前回答了一个类似的问题。实际上,我的回答看起来与 Trevor 为您提供的第二个解决方案非常相似。您是否尝试在 SO 上已回答的问题中寻找解决方案?
-
@TheMadTechnician 是的,我尝试了一些方法,但没有任何效果,我想是因为我有数组
-
使用这个
Join-Object:$Obj1 | Join $Obj2
标签: powershell