我编写了一个PowerShell函数,它返回这样的东西(来自$Objekt.Columns
):
示例1:
Addr.BoNumber Addr.FullName
------------- -------------
{212, 210, 211, 104} {xy, cv, bn, mm}
示例2:
Addr.BoNumber Addr.FullName
------------- -------------
{212} {xy}
示例3:
Addr.BoNumber Addr.FullName Addr.Email
------------- ------------- ----------
{212, 210, 211, 104} {xy, cv, bn, mm} {x, y, z, n}
现在我正在尝试编写一个将此结构更改为此的解析器:
Addr.BoNumber Addr.FullName
------------- -------------
212 xy
210 cv
211 bn
104 mm
如您所见,我有一个或多个属性以及一个或多个值。 Addr.BoNumber[0]
属于Addr.FullName[0]
,Addr.BoNumber[1]
属于Addr.FullName[1]
等。
我有以下功能应该解析它,但是我将一些问题从.Rows
保存到PSCustomObject
属性。
这是我的解析功能:
function New-OOPowerShellObject {
Param (
[Parameter(
Mandatory = $true,
Position = 0,
ValueFromPipeline = $true
)]
[FlatResponseData]$Objekt
)
# Return Objekt erstellen
$ReturnObjekt = [PSCustomObject]@{}
# Über Columns loopen und Titel eintragen
$Objekt.Columns | % {
Add-Member -InputObject $ReturnObjekt `
-NotePropertyName $_.Name `
-NotePropertyValue (foreach())
}
foreach($o in $Objekt.Columns)
{
$c = ($o.Rows.count) - 1
0..$c | % {
$ReturnObjekt."$($_.Name)" += $o.Rows[$_]
}
}
# Return
$ReturnObjekt
}
但我得到了这个错误(德语):
Ausnahme beim Festlegen von "": "Das Argument kann nicht verarbeitet werden, da der Wert des Arguments "name" ungültig ist. Ändern Sie den Wert des Arguments "name", und führen Sie den Vorgang erneut aus."
In Zeile:26 Zeichen:30
+ $ReturnObjekt."$($_.Name)" += $o.Rows[$_]
+ ~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], SetValueInvocationException
+ FullyQualifiedErrorId : ExceptionWhenSetting
任何想法?
编辑:补充信息:
$Objekt.Columns
$Objekt.Columns.Name
为字符串$Objekt.Columns.Rows
作为数组答案 0 :(得分:0)
这就是我的目标:
function Format-OOFlatResponseData {
Param (
[Parameter(
Mandatory = $true,
Position = 0,
ValueFromPipeline = $true
)]
[FlatResponseData]$Objekt
)
# Process für Pipeline Input
Process {
# Über Rows loopen
$RowCount = $Objekt.RowCount
$Return = 0..($RowCount - 1) | foreach {
# PSCustomObject erstellen
$PSCust = [PSCustomObject]@{}
foreach($C in $Objekt.Columns)
{
# Values zu PSCustomObject
Add-Member -InputObject $PSCust `
-NotePropertyName $C.Name `
-NotePropertyValue $C.Rows[$_]
}
# Return PSCustomObject in Return Var
$PSCust
}
# Return alles
$Return
}
}