You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过PowerShell获取Azure数据库详情时如何获取用户名和密码?

解决Azure SQL Server管理员密码获取及Invoke-SqlCmd使用问题

Azure通过Get-AzSqlServer返回的服务器对象中SqlAdministratorPassword为空是安全设计——Azure不会通过API返回敏感的管理员密码,防止泄露风险。要解决Invoke-SqlCmd的密码需求,可采用以下几种方案:


1. 从Azure Key Vault读取已存储的密码(推荐)

如果之前将SQL管理员密码存入了Azure Key Vault,可直接通过PowerShell读取:

# 假设密码已存入Key Vault,密钥名称为sql-admin-password
$vaultName = "your-key-vault-name"
$secretName = "sql-admin-password"
$securePassword = Get-AzKeyVaultSecret -VaultName $vaultName -Name $secretName -AsPlainText

# 在Invoke-SqlCmd中使用
Invoke-SqlCmd -ServerInstance $db.ServerName -Database $db.DatabaseName `
  -Username $server.SqlAdministratorLogin -Password $securePassword `
  -Query 'select * from [dbo].[TableName]'

2. 交互式输入密码(适合手动执行脚本)

如果脚本是手动运行,可通过交互式方式获取密码,避免硬编码:

$securePassword = Read-Host "请输入SQL管理员密码" -AsSecureString
$plainPassword = [System.Net.NetworkCredential]::new("", $securePassword).Password

Invoke-SqlCmd -ServerInstance $db.ServerName -Database $db.DatabaseName `
  -Username $server.SqlAdministratorLogin -Password $plainPassword `
  -Query 'select * from [dbo].[TableName]'

3. 重置管理员密码(若未存储或忘记密码)

如果没有保存密码,可直接重置SQL服务器的管理员密码,然后使用新密码:

# 重置密码
$newPassword = "YourNewStrongPassword123!"
Set-AzSqlServer -ResourceGroupName $server.ResourceGroupName -ServerName $server.ServerName `
  -SqlAdministratorPassword (ConvertTo-SecureString $newPassword -AsPlainText -Force)

# 使用新密码执行查询
Invoke-SqlCmd -ServerInstance $db.ServerName -Database $db.DatabaseName `
  -Username $server.SqlAdministratorLogin -Password $newPassword `
  -Query 'select * from [dbo].[TableName]'

注意:此操作会更改SQL服务器的管理员密码,需确保其他依赖该密码的服务不受影响。


4. 使用Azure AD身份验证替代SQL密码(更安全)

避免处理密码的最佳方式是使用Azure AD身份验证,无需输入SQL管理员密码:

# 使用当前登录Azure的AD账户身份验证
Invoke-SqlCmd -ServerInstance $db.ServerName -Database $db.DatabaseName `
  -Authentication ActiveDirectoryDefault `
  -Query 'select * from [dbo].[TableName]'

# 或指定特定AD用户
Invoke-SqlCmd -ServerInstance $db.ServerName -Database $db.DatabaseName `
  -Authentication ActiveDirectoryPassword `
  -Username "your-aad-user@domain.com" -Password "your-aad-password" `
  -Query 'select * from [dbo].[TableName]'

需确保AD账户已被授予SQL数据库的访问权限。


内容的提问来源于stack exchange,提问作者Veronica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:25:40