我想通过 Powershell 查询获取订阅中所有 Azure SQL PaaS 数据库的列表

I want to get a list of all Azure SQL PaaS Databases in my subscription via Powershell Query

这是我到目前为止的结果,但是returns没有输出

function Get-SQLDatabase {
[CmdletBinding()]
    param (
        # Parameter help description
        [Parameter(Mandatory)]
        [string]
        $path
    )

    $rg = Get-AzResourceGroup
    foreach($resourcegroup in $rg) {
        Get-AzSqlDatabase | export-csv -Path $path -Append
    }
}

根据 Ash 的建议,您需要枚举每个资源组中的 SQL 服务器,这会在您的循环中添加另一个循环。

function Get-SQLDatabase {
[CmdletBinding()]
    param (
        # Parameter help description
        [Parameter(Mandatory)]
        [string]
        $path
    )

    $rg = Get-AzResourceGroup
    foreach($resourcegroup in $rg) {
        $SQLServers = Get-AzSqlServer -ResourceGroup $resourcegroup.ResourceGroupName
        ForEach($Server in $SQLServers){
            Get-AzSqlDatabase -Server $Server.ServerName | export-csv -Path $path -Append
        }
    }
}

编辑: 这不起作用,所以让我们在此处添加一些故障排除步骤。您可以做几件事来帮助找到问题。您可以将 -Verbose 添加到 Get-Az* cmdlet,或者您可以在循环中添加 Write-Verbose 行来跟踪事物,而无需稍后清理脚本。让我们看看这里会是什么样子:

function Get-SQLDatabase {
[CmdletBinding()]
    param (
        # Parameter help description
        [Parameter(Mandatory)]
        [string]
        $path
    )

    $rg = Get-AzResourceGroup

    Write-Verbose "Found the following Resource Groups: `n$rg"

    foreach($resourcegroup in $rg) {

        Write-Verbose "Enumerating SQL Servers in the resource group: $resourcegroup"

        $SQLServers = Get-AzSqlServer -ResourceGroup $resourcegroup.ResourceGroupName

        Write-Verbose "Found the following SQL Servers:`n$SQLServers"

        ForEach($Server in $SQLServers){

            Write-Verbose "Adding SQL databases to the CSV from SQL Server: $Server"

            Get-AzSqlDatabase -Server $Server.ServerName | export-csv -Path $path -Append
        }
    }
}

一旦您添加了所有详细输出以跟踪事物,您可以使用 -Verbose 开关调用该函数以查看该输出,或者将 -Verbose 关闭以使用它 运行 安静地没有那个输出。

Get-SQLDatabase -Path 'C:\Temp\SQL-DBs.csv' -Verbose