设置 PowerShell Azure SQL 连接字符串参数

Set PowerShell Azure SQL Connection String Parameter

我在一个资源组中有一个 Azure SQL 数据库,在另一个资源组中有一个 key vault。一切都已部署,但我想将 sql db 的 连接字符串值分配给一个变量,并将其用于 在我的中创建一个秘密密钥保管库资源。我目前将此设置为连接字符串值:

$dbsecretvalue = ConvertTo-SecureString -String "Server=tcp:$sqlServerfqdn,1433;Initial Catalog=$database;Persist Security Info=False;用户 ID=$adminlogin ;Password=$password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30" -AsPlainText -Force

问题出在密钥保管库中,这个 附加文本 被添加到机密值而不仅仅是服务器名称: 服务器=tcp:@{FullyQualifiedDomainName=servername.azure.net......

如何删除附加文本,以便在设置变量时仅返回 sql 数据库的 FQDN(例如:databaseserver.azure.net 而不是@{FullyQualifiedDomainName=databaserver.azure.net)?我的 powershell 经验非常有限,所以任何 help/advice 将不胜感激。

谢谢!

有几种方法可以做到这一点。最简单的方法是将其分成两行:

$server = Get-AzSqlServer -ResourceGroupName $resourceGroup -ServerName $sqlServer
$sqlserverfqdn = $server.FullyQualifiedDomainName
$sqlserverfqdn
#output databaserver.azure.net

这个命令没问题,一般情况下,Powershell 默认会尝试将 JSON 变成一个对象,但有时管道进入 ConvertFrom-Json 会将数据加载到一个对象中可以那样操作

如果你需要清理一个字符串,那么替换方法通常会处理它:

$fqdn = '@{FullyQualifiedDomainName=databaserver.azure.net'
$sqlserverfqdn = $fqdn -replace "@{FullyQualifiedDomainName=",""