我想通过 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
这是我到目前为止的结果,但是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