如何迭代输入参数的对象属性
How to iterate over Object properties of an input parameter
我有一个 Azure 自动化 Powershell 工作流:
workflow wf
{
param(
[parameter(Mandatory=$True)]
[object] $p
)
inlinescript
{
# ...
}
}
我正在使用测试窗格对其进行测试并将值作为 {"FirstName": "John", "LastName": "Smith"}
传递。我也试过 {"FirstName"="John";"LastName"="Smith"}
并在这两种情况前添加 @
。
根据this
If your runbook has an object type input parameter, then use a PowerShell hashtable with (name,value) pairs to pass in a value. For example, if you have the following parameter in a runbook: [Parameter (Mandatory = $true)][object] $FullName
then you pass the following value to the parameter: @{"FirstName"="Joe";"MiddleName"="Bob";"LastName"="Smith"}
但在我的所有测试中 $p
为空。
如何定义实际对象,将其传入,然后遍历 属性 名称和值?
要访问 PowerShell 工作流 activity 中的输入参数,您必须通过 $Using
关键字来完成。一旦我弄清楚了,我就能够看到该类型作为字符串传入。因此,我必须使用 ConvertFrom-Json
cmdlet 从 json 字符串转换为对象。然后我可以通过获取 PSObject
:
的 Properties
属性 来遍历属性
$pObj = $Using:p | ConvertFrom-Json
ForEach ($pr in $pObj.PSObject.Properties)
{
#$pr.Name
#$pr.Value
}
我有一个 Azure 自动化 Powershell 工作流:
workflow wf
{
param(
[parameter(Mandatory=$True)]
[object] $p
)
inlinescript
{
# ...
}
}
我正在使用测试窗格对其进行测试并将值作为 {"FirstName": "John", "LastName": "Smith"}
传递。我也试过 {"FirstName"="John";"LastName"="Smith"}
并在这两种情况前添加 @
。
根据this
If your runbook has an object type input parameter, then use a PowerShell hashtable with (name,value) pairs to pass in a value. For example, if you have the following parameter in a runbook:
[Parameter (Mandatory = $true)][object] $FullName
then you pass the following value to the parameter:@{"FirstName"="Joe";"MiddleName"="Bob";"LastName"="Smith"}
但在我的所有测试中 $p
为空。
如何定义实际对象,将其传入,然后遍历 属性 名称和值?
要访问 PowerShell 工作流 activity 中的输入参数,您必须通过 $Using
关键字来完成。一旦我弄清楚了,我就能够看到该类型作为字符串传入。因此,我必须使用 ConvertFrom-Json
cmdlet 从 json 字符串转换为对象。然后我可以通过获取 PSObject
:
Properties
属性 来遍历属性
$pObj = $Using:p | ConvertFrom-Json
ForEach ($pr in $pObj.PSObject.Properties)
{
#$pr.Name
#$pr.Value
}