如何迭代输入参数的Object属性

时间:2017-12-19 23:44:58

标签: azure-automation powershell-workflow

我有一个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都为空。

如何定义实际对象,传入它,然后遍历属性名称和值?

1 个答案:

答案 0 :(得分:0)

要访问PowerShell工作流活动中的输入参数,您必须通过$Using关键字进行操作。一旦我想出那个,我就能看到这个类型是作为一个字符串传递的。所以我必须使用ConvertFrom-Json cmdlet从json字符串转换为对象。然后,我可以通过获取Properties的{​​{1}}属性来遍历属性:

PSObject