0

我有一个 Azure 自动化 Powershell 工作流:

workflow wf
{
  param(
    [parameter(Mandatory=$True)]
    [object] $p
  )
  inlinescript
  {
    # ...
  }
}

我正在使用“测试”窗格对其进行测试,并将值作为{"FirstName": "John", "LastName": "Smith"}. 我也尝试过在这两种情况下{"FirstName"="John";"LastName"="Smith"}添加。@

据此_

如果您的 Runbook 具有对象类型输入参数,则使用带有 (name,value) 对的 PowerShell 哈希表来传递一个值。例如,如果 Runbook 中有以下参数:[Parameter (Mandatory = $true)][object] $FullName则将以下值传递给参数:@{"FirstName"="Joe";"MiddleName"="Bob";"LastName"="Smith"}

但在我所有的测试$p中都是空的。

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

4

1 回答 1

0

要访问 PowerShell 工作流活动中的输入参数,您必须通过$Using关键字进行操作。一旦我弄清楚那个,我就可以看到类型是作为字符串传入的。所以我不得不使用ConvertFrom-Jsoncmdlet 从一个 json 字符串转换为一个对象。Properties然后,我可以通过获取以下属性来遍历属性PSObject

$pObj = $Using:p | ConvertFrom-Json
ForEach ($pr in $pObj.PSObject.Properties)
{
   #$pr.Name
   #$pr.Value
}
于 2017-12-21T21:40:07.670 回答