Как извлечь информацию NIC с помощью командлета Get-AzureRmVM

Я хочу создать CSV-файл, содержащий имена виртуальных машин и сетевых интерфейсов, которые к ним подключены. Когда я запускаю командлет, я вижу следующий вывод в табличном формате

ResourceGroupName Name Location VmSize  OsType NIC

Когда я пытаюсь выбрать только объект NIC, используя команду Get-AzureRmVM | select-object NIC выход пуст.

Кто-нибудь может подсказать мне, как отфильтровать имена сетевых карт и имена виртуальных машин?

1 ответ

Решение

Потому что NIC не проект в Get-AzureRmVmпоэтому мы не можем использовать Get-AzureRmVM | select-object NIC чтобы получить название NIC:

PS D:\testdata> get-azurermvm | gm


   TypeName: Microsoft.Azure.Commands.Compute.Models.PSVirtualMachineList

Name                     MemberType Definition
----                     ---------- ----------
Equals                   Method     bool Equals(System.Object obj)
GetHashCode              Method     int GetHashCode()
GetType                  Method     type GetType()
ToPSVirtualMachine       Method     Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine ToPSVirtualMachine()
ToString                 Method     string ToString()
AvailabilitySetReference Property   Microsoft.Azure.Management.Compute.Models.SubResource AvailabilitySetReference {...
DiagnosticsProfile       Property   Microsoft.Azure.Management.Compute.Models.DiagnosticsProfile DiagnosticsProfile ...
DisplayHint              Property   Microsoft.Azure.Commands.Compute.Models.DisplayHintType DisplayHint {get;set;}
Extensions               Property   System.Collections.Generic.IList[Microsoft.Azure.Management.Compute.Models.Virtu...
HardwareProfile          Property   Microsoft.Azure.Management.Compute.Models.HardwareProfile HardwareProfile {get;s...
Id                       Property   string Id {get;set;}
Identity                 Property   Microsoft.Azure.Management.Compute.Models.VirtualMachineIdentity Identity {get;s...
InstanceView             Property   Microsoft.Azure.Management.Compute.Models.VirtualMachineInstanceView InstanceVie...
LicenseType              Property   string LicenseType {get;set;}
Location                 Property   string Location {get;set;}
Name                     Property   string Name {get;set;}
NetworkProfile           Property   Microsoft.Azure.Management.Compute.Models.NetworkProfile NetworkProfile {get;set;}
OSProfile                Property   Microsoft.Azure.Management.Compute.Models.OSProfile OSProfile {get;set;}
Plan                     Property   Microsoft.Azure.Management.Compute.Models.Plan Plan {get;set;}
ProvisioningState        Property   string ProvisioningState {get;set;}
RequestId                Property   string RequestId {get;set;}
ResourceGroupName        Property   string ResourceGroupName {get;}
StatusCode               Property   System.Net.HttpStatusCode StatusCode {get;set;}
StorageProfile           Property   Microsoft.Azure.Management.Compute.Models.StorageProfile StorageProfile {get;set;}
Tags                     Property   System.Collections.Generic.IDictionary[string,string] Tags {get;set;}
Type                     Property   string Type {get;set;}
VmId                     Property   string VmId {get;set;}

Кто-нибудь может подсказать мне, как отфильтровать имена сетевых карт и имена виртуальных машин?

В качестве обходного пути мы можем использовать этот скрипт для получения имени NIC:

$a = get-azurermvm -ResourceGroupName jasonvm -Name jasonvm
$b = $a.NetworkProfile.NetworkInterfaces.id -split "/"
$nic = $b[-1]
$nic

Тогда мы можем использовать $nic чтобы получить информацию о NIC, вот так:

Get-AzureRmNetworkInterface -Name $nic -ResourceGroupName jasonvm
Другие вопросы по тегам