我有一个Azure自动化Powershell工作流程:
workflow wf
{
param(
[parameter(Mandatory=$True)]
[object] $p
)
inlinescript
{
# ...
}
}
我正在使用“测试”窗格测试它并将值传递为{"FirstName": "John", "LastName": "Smith"}
。我也试过{"FirstName"="John";"LastName"="Smith"}
并在两个案件前加上@
。
根据this
如果Runbook具有对象类型输入参数,则使用带有(名称,值)对的PowerShell哈希表来传递值。例如,如果Runbook中有以下参数:
[Parameter (Mandatory = $true)][object] $FullName
,则将以下值传递给参数:@{"FirstName"="Joe";"MiddleName"="Bob";"LastName"="Smith"}
但在我的所有测试中,$p
都是空的。
如何定义实际对象,传入,然后迭代属性名称和值?
要访问PowerShell工作流活动中的输入参数,您必须通过$Using
关键字进行操作。一旦我想出那个,我就能看到这个类型是作为一个字符串传递的。所以我必须使用ConvertFrom-Json
cmdlet从json字符串转换为对象。然后,我可以通过获取Properties
的PSObject
属性来遍历属性:
$pObj = $Using:p | ConvertFrom-Json
ForEach ($pr in $pObj.PSObject.Properties)
{
#$pr.Name
#$pr.Value
}