$list = @()
$cels = @()
$objResult = @()
$list =
"1384630490 1 68 4 adm-media03 4184066 4184062 0 nbpem CLIENT POLICY SBT_windows_srv_siteservers_isolation SCHED Diff EXIT STATUS 0 (the requested operation was successfully completed)",
"1385148607 1 68 4 adm-media01 4277480 4277295 0 nbpem CLIENT POLICY SCHED Full EXIT STATUS 87 (media close error)"
$i = 0
foreach ($row in $list){
$cels = $row.split(" ")
foreach ($cel in $cels) {
$objResult += New-Object -TypeName PSObject -Property @{
"T$i" = $cel
}
$i++
}
}
和
的结果$ objResult |克
是:
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
T0 NoteProperty System.String T0=1384630490
为什么不将所有的属性添加到对象中? 应在$ i迭代后插入每个新属性,其值为$ cell 并且shomething不行,我无法弄清楚问题是什么。 它应该看起来像:
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
T0 NoteProperty System.String T0=1384630490
T1 NoteProperty System.String T1=1
T2 NoteProperty System.String T2=68
T3 NoteProperty System.String T3=4
T4 NoteProperty System.String T4=adm-media03
等
答案 0 :(得分:1)
如果每行需要一个对象,则需要在创建对象之前将所有属性累积到单个哈希中:
$list = @()
$cels = @()
$objResult = @()
$list =
"1384630490 1 68 4 adm-media03 4184066 4184062 0 nbpem CLIENT POLICY SBT_windows_srv_siteservers_isolation SCHED Diff EXIT STATUS 0 (the requested operation was successfully completed)",
"1385148607 1 68 4 adm-media01 4277480 4277295 0 nbpem CLIENT POLICY SCHED Full EXIT STATUS 87 (media close error)"
foreach ($row in $list){
$i = 0
$PropertyHash = @{}
$cels = $row.split(" ")
foreach ($cel in $cels) {
$PropertyHash += @{
"T$i" = $cel
}
$i++
}
$objResult += $objResult += New-Object -TypeName PSObject -Property $PropertyHash
}
$objResult
现在,您正在为行拆分中的每个项目创建一个具有单个属性的对象。
答案 1 :(得分:0)
这是因为你在最内层的foreach循环的每次迭代中都创建了一个新的PSObject。
您可能希望使用Add-Member,而不是这样做:
$list = @()
$cels = @()
$objResult = New-Object -TypeName PSObject
$list =
"1384630490 1 68 4 adm-media03 4184066 4184062 0 nbpem CLIENT POLICY SBT_windows_srv_siteservers_isolation SCHED Diff EXIT STATUS 0 (the requested operation was successfully completed)",
"1385148607 1 68 4 adm-media01 4277480 4277295 0 nbpem CLIENT POLICY SCHED Full EXIT STATUS 87 (media close error)"
$i = 0
foreach ($row in $list) {
$cels = $row.split(" ")
foreach ($cel in $cels) {
$objResult | Add-Member -MemberType NoteProperty -Name "T$i" -Value $cel
$i++
}
}