我有一个小的包装函数,只是将几个变量传递给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"})
答案 0 :(得分:0)
改为调用你的函数:
addTag $AwsCredentials $instanceid "Creator" "123456"
在Powershell中,不使用括号和逗号调用函数参数,这就是将参数强制转换为Object数组的原因。