0

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

$dbsecretvalue = ConvertTo-SecureString -String "Server=tcp:$sqlServerfqdn,1433;初始目录=$database;Persist Security Info=False;用户 ID=$adminlogin;Password=$password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate =假;连接超时=30" -AsPlainText -Force

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

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

谢谢!

4

1 回答 1

1

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

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

这个命令很好,通常 Powershell 默认会尝试将 JSON 转换为对象,但偶尔管道ConvertFrom-Json会将数据加载到您可以通过这种方式操作的对象中

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

$fqdn = '@{FullyQualifiedDomainName=databaserver.azure.net'
$sqlserverfqdn = $fqdn -replace "@{FullyQualifiedDomainName=",""
于 2020-12-10T03:28:08.423 回答