AWS Powershell函数将AWSCredentials转换为System.Object

时间:2017-05-25 06:26:19

标签: powershell amazon-web-services

我有一个小的包装函数,只是将几个变量传递给New-Ec2Tag函数。当我运行它时,它会转换我的 Amazon.Runtime.AWSCredentials 进入 System.Object [] ,然后尝试将其转换回来并生成错误。

有没有办法让这个功能起作用?

功能

function addTag ($awscred, $instanceID, $TagName, $TagValue){
    Write-output $awscred.gettype()
    New-Ec2Tag -region 'ap-southeast-2' -Resource $instanceID -Tag @{Key=$TagName;Value=$TagValue} -Credential $AwsCredentials}

命令我运行

write-output $AwsCredentials.gettype()
addTag($AwsCredentials,$instanceid,"Creator","123456")

命令输出

IsPublic IsSerial Name                                     BaseType                                                                                                                       
-------- -------- ----                                     --------                                                                                                                       
True     False    SessionAWSCredentials                    Amazon.Runtime.AWSCredentials                                                                                                  
True     True     Object[]                                 System.Array    

New-EC2Tag : Cannot convert 'System.Object[]' to the type 'Amazon.Runtime.AWSCredentials' required by parameter 'Credential'. Specified method is not supported.

如果我不将它包装在函数

中,该命令有效
New-Ec2Tag -region 'ap-southeast-2' -Credential $AwsCredentials -Resource $instanceID -Tag (@{Key="Name";Value="test"})

1 个答案:

答案 0 :(得分:0)

改为调用你的函数:

addTag $AwsCredentials $instanceid "Creator" "123456"

在Powershell中,不使用括号和逗号调用函数参数,这就是将参数强制转换为Object数组的原因。