我有一个如下所示的现有脚本。
$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
是我的问题,我希望有一个一致的方法来提取资源值。
或者,您可以使用
运算符通过 PowerShell 从 Azure 资源 ID 中提取值。-split
就我而言,我运行了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
回复: