获取VM名称和详细信息按HTTP(80)端点过滤

时间:2015-09-13 07:17:32

标签: powershell azure cloud endpoint

我在同一个Microsoft Azure云服务上有一些虚拟机,我希望只使用带有Powershell命令的HTTP(端口80TCP)端点获取实例(虚拟机)名称。

这是我的小代码! Get-AzureVM -ServiceName | Get-AzureEndpoint | Where-Object {$ _.Port -eq 80}

谢谢!!!

1 个答案:

答案 0 :(得分:0)

致电Get-AzureEndpoint后,您不再拥有 VM 对象,您拥有 Endpoint 对象,这些对象具有不同的属性。然后,您可以过滤掉所需的端点,但现在您缺少VM的属性。

可能的解决方案:遍历每个VM的所有端点

$VMs = Get-AzureVM 'myservicename'
foreach ($VM in $VMs) {
    # check if the current VM has an endpoint with port 80
    $HttpEndpoint = Get-AzureEndpoint -VM $VM | where { $_.Port -eq 80 }
    if ($HttpEndpoint) {
        $VM.Name
    }
}

这是假设,端点不包含它们所属的VM的名称。否则你当然可以做到

... where { $_.Port -eq 80 } | select InstanceName  # or whatever the name of the property with the VM name is

跟进: 要查询其他端口:

where { $_.Port -eq 80 -or $_.Port -eq 443 }

或:

where { 80, 443 -contains $_.Port }

或使用PowerShell 3及更高版本:

where { $_.Port -in 80, 443 }