如何在不通过RDPlogin的情况下查看ec2实例的windows计算机名称?

看来这应该是简单明了的,但是我没有在控制台中看到它,也没有注意到“描述实例”中的任何内容。 鉴于一些警报电子邮件被绑定到机器名称,迅速找出哪个实例是最有帮助的。 将所有实例名称的列表转储到我的帐户的计算机名称映射的一些方法将是理想的。

更新:我已经尝试从另一个EC2主机135-139打开端口,看看我是否可以使用NetBios来获取名称。 我跑了:

ping -a <ip> nbtstat -a <ip> 

没有返回远程IP的机器名称。 与本地IP都做。

我们有同样的问题。 我们每天都会自动从CloudFormation中自动构build大量的EC2实例,并且需要一种方法来根据自己的主机在控制台中单独轻松识别它们。

目前所有自动构build的服务器都具有相同的名称,这在云形成模板中是固定的string。

我们已经有了一个基于“用户数据”的引导机制,自动创build的实例在第一次启动时会运行一些PowerShell代码。

因此,为了让主机名显示在AWS控制台中,我想最简单的方法是更改​​“name”标签,将主机名附加到现有标签。

我将下面的代码添加到bootstrap中:

 function Get-NameTagValue() { param( [parameter(Mandatory)] [string] $InstanceId ) $filter1 = New-Object -TypeName Amazon.EC2.Model.Filter -Property @{ Name = 'resource-id' Values = $InstanceId } $filter2 = New-Object -TypeName Amazon.EC2.Model.Filter -Property @{ Name = 'key' Values = 'Name' } $filters = $filter1, $filter2 $tag = Get-EC2Tag ` -Region $Region ` -ProfileName $ProfileName ` -Filter $filters #Output the tag value $tag.Value } function Set-InstanceNameTag() { $instanceId = (Invoke-RestMethod -Method Get -Uri http://169.254.169.254/latest/meta-data/instance-id) #Get the current value of the name tag $currentNameTagValue = Get-NameTagValue -InstanceId $instanceId $newNameTagValue = "$currentNameTagValue - $env:COMPUTERNAME" Remove-EC2Tag ` -Resource $instanceId ` -Tag @{ Key="Name" } ` -Region $Region ` -ProfileName $ProfileName ` -Force New-EC2Tag ` -Resource $instanceId ` -Tag @{ Key="Name"; Value=$newNameTagValue } ` -Region $Region ` -ProfileName $ProfileName ` } 

代码首先从元数据中获取isnance id,然后使用此idfind现有的Name标记,将其删除并添加一个新的Name标记,其中包含现有值,后跟主机名。

这两个函数包含在Bootstrap脚本中,该脚本具有在函数中使用的$Region$ProfileName参数。

然后,我们只需从主脚本中调用函数Set-InstanceNameTag ,并使用现有的Name标签后跟一个连字符和主机名。

为了使这个工作,EC2实例需要有一个angular色,有权限:CreateTags,DeleteTags和DescribeTags。

您可以使用以下策略实现此目的:

 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateTags", "ec2:DeleteTags", "ec2:DescribeTags" ], "Resource": [ "*" ] } ] } 

希望能帮助别人。

卡尔

知道机器名称的最好方法是在机器上运行相关命令(命令行中的'hostname')。

您可以运行一个脚本来遍历帐户中的实例,并对每个名称运行远程命令以获取其主机名。 然后,您可以使用其实际的主机名为每个实例添加一个标签。 (使用create-tags命令: http : //docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-CreateTags.html )

如果您有远程计算机的密码,则可以使用powershell远程执行命令。 使用PowerShell远程执行说明可在这里: https : //stackoverflow.com/questions/10237083/how-to-programmatically-remotely-execute-a-program-in-ec2-windows-instance/13284313#13284313