将字符串拆分为对象数组
Split a string into an Object array
我在 PowerShell 中有这个字符串:
$filter = "Name;Server;Mounted;ObjectCategory;Guid;WhenChangedUTC;WhenCreatedUTC;ObjectState"
我想拆分它得到一个对象数组,我试过:
$stringArray = $filter.Split(';')
但它是一个字符串数组。
最后想打个电话:
... | Select-Object -Property @{Name = 'Command'; Expression = { "Insert" } }, $filterObjectArray
当 $filterObjectArray 是字符串数组时,它不起作用。
但如果 $filterObjectArray = 'Name', 'Server'
...
问题是我的自定义 属性 调用了 Command 因为如果我只使用 :
... | Select-Object -Property $filterObjectArray
有效。
感谢您的帮助。
您的 -Property
参数必须作为 flat 数组传递,这需要使用 expression:
# Note: Target parameter -Property is positionally implied.
Select-Object (, @{Name = 'Command'; Expression={ "Insert" }} + $filterObjectArray)
注:
因为需要一个表达式作为命令参数,它必须包含在(...)
, grouping operator.
,
,array constructor operator,用于将脚本块({ ... }
)包装在一个单元素数组中,以便应用+
运算符对其执行 数组连接 ,这意味着 RHS 数组的元素 $filterObjectArray
直接成为结果数组的元素,从而产生必要的 flat 计算属性数组和 属性 名称。
至于你试过的:
@{Name = 'Command'; Expression = { "Insert" } }, $filterObjectArray
这个参数,在参数模式下解析,结果是一个嵌套数组:第一个元素是脚本块({ ... }
),第二个和最后一个元素是$filterObjectArray
数组作为一个整体,这就是存储在其中的名称无法被识别的原因。
请注意,在参数模式下 - PowerShell 的两个之一 - only a small subset of operators can be used, such as ,
and @
, the splatting operator;要使用其他表达式,例如 +
,需要一个分组表达式 ((...)
),如图所示(或者,要使用整个 statements 的输出作为参数, $(...)
或 @(...)
)
我在 PowerShell 中有这个字符串:
$filter = "Name;Server;Mounted;ObjectCategory;Guid;WhenChangedUTC;WhenCreatedUTC;ObjectState"
我想拆分它得到一个对象数组,我试过:
$stringArray = $filter.Split(';')
但它是一个字符串数组。
最后想打个电话:
... | Select-Object -Property @{Name = 'Command'; Expression = { "Insert" } }, $filterObjectArray
当 $filterObjectArray 是字符串数组时,它不起作用。
但如果 $filterObjectArray = 'Name', 'Server'
...
问题是我的自定义 属性 调用了 Command 因为如果我只使用 :
... | Select-Object -Property $filterObjectArray
有效。
感谢您的帮助。
您的 -Property
参数必须作为 flat 数组传递,这需要使用 expression:
# Note: Target parameter -Property is positionally implied.
Select-Object (, @{Name = 'Command'; Expression={ "Insert" }} + $filterObjectArray)
注:
因为需要一个表达式作为命令参数,它必须包含在
(...)
, grouping operator.,
,array constructor operator,用于将脚本块({ ... }
)包装在一个单元素数组中,以便应用+
运算符对其执行 数组连接 ,这意味着 RHS 数组的元素$filterObjectArray
直接成为结果数组的元素,从而产生必要的 flat 计算属性数组和 属性 名称。
至于你试过的:
@{Name = 'Command'; Expression = { "Insert" } }, $filterObjectArray
这个参数,在参数模式下解析,结果是一个嵌套数组:第一个元素是脚本块({ ... }
),第二个和最后一个元素是$filterObjectArray
数组作为一个整体,这就是存储在其中的名称无法被识别的原因。
请注意,在参数模式下 - PowerShell 的两个之一 ,
and @
, the splatting operator;要使用其他表达式,例如 +
,需要一个分组表达式 ((...)
),如图所示(或者,要使用整个 statements 的输出作为参数, $(...)
或 @(...)
)