5

我正在使用 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

}

我得到以下信息:

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/

“Get-EC2PasswordData:值不能为空”是什么意思。意思是?我没有传递任何空值。

4

1 回答 1

6

原来答案是因为密码尚不可用。您只需要等待一段时间机器即可启动。您会发现您也无法在控制台中获取 Windows 管理员密码(尽管 ti 提供了更直观的消息)。

如果你等了很久,可能是因为你的 Ec2ConfigService 没有在机器上配置重置密码。您可能需要更改“C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml”。在那里,您会在顶部附近找到这样的一块:

<Plugin>
  <Name>Ec2SetPassword</Name>
  <State>Disabled</State>
</Plugin>

将“禁用”更改为“启用”:

<Plugin>
  <Name>Ec2SetPassword</Name>
  <State>Enabled</State>
</Plugin>

我想把它发布到互联网上的某个地方,这样下一个谷歌搜索“Get-EC2PasswordData:值不能为空”的人可能会发现一些有用的东西。

于 2015-11-17T00:01:19.603 回答