从哪里获取 AzureResourceManager CmdLets 的 ResourceGroup?

Where do I get the ResourceGroup for AzureResourceManager CmdLets?

新的和即将取代的 AzureRsourceManager cmdlet 都需要一个 -ResourceGroupName 参数。我应该在哪里得到这个?不包括 UI,因为这在很大程度上违背了自动化的目的。

目前,我正在打电话 Get-AzureResourceGroup 并尝试每一个,直到我成功为止。这非常慢——大约几分钟。比如获取WebApp信息,我是运行 this,

$groups = Get-AzureResourceGroup
foreach ($g in $groups)
{
    if ($ResourceGroup) { $ResourceGroup.Value = $g.ResourceGroupName }
    $app = Get-AzureWebApp -Name $Name -ResourceGroupName $g.ResourceGroupName -ErrorAction SilentlyContinue
    Write-Verbose "Checking $($g.ResourceGroupName)"
    if ($app)
    {
        $ResourceGroups[$g.ResourceGroupName] = @($ResourceGroups[$g.ResourceGroupName]) + $Name
        return $app
    }
}

如果您转到门户并导航到您的 Web 应用程序,您可以轻松地看到它在哪个资源组中。请参见下面的屏幕截图。什么是资源组,是对资源进行分组的任意名称。例如下面您可以看到它正在对两个 Web 应用程序和两个应用程序服务计划进行分组。

您可以使用 Azure PowerShell 中的 Get-AzureRmResourceGroup PowerShell 命令,不带任何参数,以非常快的响应时间获取所有资源组。

参考Link:Get-AzureRMResourceGroup description

注意:您需要将 Azure PowerShell 更新到最新版本才能使用此新功能。当前版本是 1.0.1(2015 年 11 月更新)

正如@theadriangreen 在他的评论中指出的那样,直接查询 REST API 更快。我发现一些 RM cmdlet 实际上确实这样做了。

我在 this gist.

中编写了一组 PowerShell 函数,使 API 的使用更加轻松快捷(使用缓存)