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

问题描述 投票:0回答:1

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

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

azure-automation powershell-workflow
1个回答
0
投票

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

$pObj = $Using:p | ConvertFrom-Json
ForEach ($pr in $pObj.PSObject.Properties)
{
   #$pr.Name
   #$pr.Value
}
© www.soinside.com 2019 - 2024. All rights reserved.