Как я могу получить IP-адреса и имена VM в переменную - PullRequest
0 голосов
/ 10 мая 2018

Я хочу получить список всех vms с именем « server » в них, а также IP-адреса этих машин. Приведенное ниже прекрасно подходит для получения имен, однако как я могу добавить частный IP-адрес каждого виртуального компьютера в переменную?

$machines = Get-AzureRmVM -ResourceGroupName $resourcegroup | where {$_.Name -like server" + "*"}

1 Ответ

0 голосов
/ 10 мая 2018

Get-AzureRmVM Командлет не получает информацию об IP-адресе любой виртуальной машины.

Вы должны получить имя NetworkInterface из Get-AzureRmVM, а затем передать значение командлету Get-AzureRmNetworkInterface, чтобы получитьЧастный IP.

Get-AzureRmVM -ResourceGroupName TestRG | Where-Object {$_.Name -like '*server*'} | ForEach-Object {
    $NIC = $_.NetworkProfile.NetworkInterfaces.id -replace '^.*/'
    $RGName = $_.NetworkProfile.NetworkInterfaces.id -replace '^.*resourceGroups/(.*)/providers.*','$1'    
    $IP = (Get-AzureRmNetworkInterface -Name $NIC -ResourceGroupName $RGName).IpConfigurations.PrivateIpAddress
    [PSCustomObject]@{VMName = $_.Name ; PrivateIpAddress = $IP}
}

Или Вы можете напрямую вызвать Get-AzureRmNetworkInterface и отфильтровать виртуальную машину со свойством VirtualMachine.ID

$Resourcegroup = 'TestRG'; $VmName = 'server'
Get-AzureRmNetworkInterface | Where-Object { $_.VirtualMachine.ID -match "^.*resourceGroups/$Resourcegroup.*virtualMachines/.*$VmName.*" } | 
    Select-Object @{L='VMName';ex = {$_.VirtualMachine.Id -replace '^.*/'}}, @{L='PrivateIpAddress';ex = {$_.IpConfigurations.PrivateIpAddress}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...