You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure CLI提取VM的VNet、子网及路由表脚本报错求助

Azure PowerShell脚本获取VM网络资源报错求助

我想用Azure PowerShell提取指定VM的虚拟网络(VNet)、子网和路由表信息,比Azure Portal操作更高效。这是我第一次使用Az模块编写脚本,目前已暂时禁用登录/登出及VM名称输入功能,但脚本无法正常运行。

报错详情

报错发生在以下代码行:
$vnetId = (Get-AzNetworkInterface -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName).IpConfigurations[0].Subnet.Id.Split("/")[-3]

收到的错误提示:

Get-AzNetworkInterface : The Resource 'Microsoft.Network/networkInterfaces/vmva2015' under resource group 'RG-REDISPATCHPROD-PROD-001' was not found.
StatusCode: 404
ReasonPhrase: Not Found
ErrorCode: ResourceNotFound

我的脚本

# Importieren der benötigten Az-Module
Import-Module Az.Accounts
Import-Module Az.Network
Import-Module Az.Compute
Import-Module Az.Resources
Import-Module Az.DesktopVirtualization

# Anmelden bei Azure
    #Connect-AzAccount

# Eingabeaufforderung für den VM-Namen anzeigen
    #$vmName = Read-Host "Geben Sie den Namen der VM ein: "
$vmName = "vmva2015" # Der Name der VM ist hier fest kodiert, für Testzwecke

# Durchsuchen aller Abonnements nach der VM
$subscriptions = Get-AzSubscription
foreach ($subscription in $subscriptions) {
    Set-AzContext $subscription

    # Suchen der VM mit dem angegebenen Namen
    $vm = Get-AzVM -Name $vmName -ErrorAction SilentlyContinue
    if ($vm) {
        $resourceGroupName = $vm.ResourceGroupName
        # Die VM wurde gefunden, die benötigten Parameter abrufen
        $vnetId = $vm.NetworkProfile.NetworkInterfaces[0].Id.Split("/")[8]
        $vnet = Get-AzVirtualNetwork -ResourceGroupName $resourceGroupName -Name $vnetId
        $subnetId = $vm.NetworkProfile.NetworkInterfaces[0].Id.Split("/")[10]
        $subnet = Get-AzVirtualNetworkSubnet -Name $subnetId -VirtualNetwork $vnet
        $rtName = $subnet.RouteTable.Id.Split("/")[-1]
        $rt = Get-AzRouteTable -Name $rtName -ResourceGroupName $resourceGroupName

        # Ergebnisse ausgeben
        Write-Host "Name der VM: $($vm.Name)"
        Write-Host "Name des VNet: $($vnet.Name)"
        Write-Host "Name des Subnet: $($subnet.Name)"
        Write-Host "Name der Routing-Tabelle: $($rt.Name)"

        # Das Skript endet, sobald eine VM gefunden wurde
        break
    }
}

我已经花了6-7小时搜索相关内容,但由于自身知识储备不足,还是没能解决问题,希望能得到帮助。

内容的提问来源于stack exchange,提问作者Andres Trujillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:47:05