为什么Get-EC2PasswordData返回"参数不正确."?

Rya*_*ton 5 powershell amazon-ec2 amazon-web-services aws-powershell

我正在使用powershell来调用Get-EC2PasswordData,如下所示:

$instances = (Get-EC2Instance -Filter @($envFilter, $stateFilter)).Instances

$instances | Foreach-object {
    $instID = $_.InstanceId
    Write-Host Getting password to $instID...
    $password = Get-EC2PasswordData -InstanceId $instID -PemFile "c:\my.pem" -Decrypt
    Write-Host Username/Password for $_.PrivateIpAddress is Administrator/$password

}
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

Getting password to i-3e961280 ...
Get-EC2PasswordData : Value cannot be null.
Parameter name: s
At C:\temp\CIS-aws-volumes\copyToMachine.ps1:12 char:17
+     $password = Get-EC2PasswordData -InstanceId $instID -PemFile "c:\docs\ssh\ci ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Amazon.PowerShe...swordDataCmdlet:GetEC2PasswordDataCmdlet) [Get-EC2
   PasswordData], ArgumentNullException
    + FullyQualifiedErrorId : InvalidOperationException,Amazon.PowerShell.Cmdlets.EC2.GetEC2PasswordDataCmdlet

Username/Password for 10.185.30.124 is Administrator/
Run Code Online (Sandbox Code Playgroud)

什么是"Get-EC2PasswordData:Value不能为空".意思?我没有传入任何空值.

Rya*_*ton 6

原来答案是因为密码还没有.你只需要等待一段时间让机器出现.您会发现您也无法在控制台中获取Windows管理员密码(尽管ti提供了更直观的消息).

如果你已经等了很长时间,可能是因为你的Ec2ConfigService没有在机器上配置来重置密码.您可能需要更改"C:\ Program Files\Amazon\Ec2ConfigService\Settings\config.xml".在那里,你会发现这样的一块靠近顶部:

<Plugin>
  <Name>Ec2SetPassword</Name>
  <State>Disabled</State>
</Plugin>
Run Code Online (Sandbox Code Playgroud)

将"已禁用"更改为"已启用":

<Plugin>
  <Name>Ec2SetPassword</Name>
  <State>Enabled</State>
</Plugin>
Run Code Online (Sandbox Code Playgroud)

我想把它发布到互联网的某个地方,所以下一个Googles"Get-EC2PasswordData:Value not not null"的人可能会发现一些有用的东西.