我在同一个Microsoft Azure云服务上有一些虚拟机,我希望只使用带有Powershell命令的HTTP(端口80TCP)端点获取实例(虚拟机)名称。
这是我的小代码! Get-AzureVM -ServiceName | Get-AzureEndpoint | Where-Object {$ _.Port -eq 80}
谢谢!!!
答案 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 }