0

我在 Azure 自动化中有一个 powershell runbook,其中包含以下代码:

param
(        
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] 
        [String] $ADMINUSERS,
)


#parse User data
function Get-GroupUser 
{
    [CmdletBinding()]
    Param
    (
        [Parameter()]
        [string]$inputUsers
    )
        $userlist = $Local:inputUsers.split(',')
        if ($Local:inputUsers -notlike "*@*") {
            $userlist.replace(' ','')
        } 
        else {
            $returnArray = @()    
            foreach ($user in $($inputUsers | convertFrom-Json)) {
                $returnArray += $user.split('@')[0]
            }
            $returnArray
}

Get-GroupUser -inputUsers $ADMINUSERS

我对 $ADMINUSERS 的第一个输入如下所示:

["johndoe@abc.biz","janedoe@abc.biz"]

当 Runbook 运行时,它会立即失败并出现以下错误:

Cannot process argument transformation on parameter 'ADMINUSERS'. Cannot convert value to type System.String. (Cannot convert value to type System.String. (Cannot convert value to type System.String.))

我对 $ADMINUSERS 的第二个输入如下所示:

johndoe,janedoe

这成功地完成了。

有什么想法可以解决 Azure 自动化运行手册中的第一个输入错误吗?

注意:当我从服务器本地运行两个输入时,它成功完成。

4

1 回答 1

0

参数需要一个字符串或一个数组,但不是两种形式。如果你想接受一个字符串数组,参数语法是:

[String[]] $ADMINUSERS

注意 之后的额外括号对String,表示一个数组。

给定数组,您可以使用以下命令转换为逗号分隔的字符串join

Get-GroupUser -inputUsers ($ADMINUSERS -join ",")

我不是你是否可以接受你提到的两种输入形式,应该选择其中一种。

于 2020-07-30T20:09:14.123 回答