如何使用 powershell 从 Azure 资源 ID 中提取值

问题描述 投票:0回答:1

我有一个如下所示的现有脚本。

    $subnet_config = Get-AzVirtualNetworkSubnetConfig -Name $subnet.Name -VirtualNetwork $vnet
    $RouteTableJson = $subnet_config.RouteTableText | ConvertFrom-Json
    $RouteJson = $subnet_config.RouteTableText | ConvertFrom-Json
    $rg = [regex]::Match($RouteTableJson.ID, '/resourceGroups/([^/]+)/').Groups[1].Value

ID 的原始 json 值如下所示。

False /subscriptions/ccccccccccccccc/resourceGroups/rg-mynetwork01/providers/Microsoft.Network/routeTables/my-route

我尝试使用下面的方法来提取

routeTables

的值

我想提取路线名称,但它不起作用。

$route = [regex]::Match($RouteTableJson.ID, '/routeTables/([^/]+)/').Groups[1].Value

我很好奇找到一种方法来提取我需要的任何值,只要我知道它与哪个领域相关,有没有办法做到这一点。例如,我可以按照上面的代码提取资源组,如果我需要提取订阅,在这个问题中

routeTables
是我的问题,我希望有一个一致的方法来提取资源值。

azure powershell azure-virtual-network
1个回答
0
投票

或者,您可以使用

-split
运算符通过 PowerShell 从 Azure 资源 ID 中提取值。

就我而言,我运行了modified PowerShell 脚本并成功获取了所需的值,如下所示:

$subnet_config = Get-AzVirtualNetworkSubnetConfig -Name $subnet.Name -VirtualNetwork $vnet
$RouteTableJson = $subnet_config.RouteTableText | ConvertFrom-Json

$rg = ($RouteTableJson.ID -split '/resourceGroups/')[1] -split '/' | Select-Object -First 1
$subscriptionId = ($RouteTableJson.ID -split '/subscriptions/')[1] -split '/' | Select-Object -First 1
$routeTableName = ($RouteTableJson.ID -split '/routeTables/')[1] -split '/' | Select-Object -First 1

回复:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.