【问题标题】:Reading connection string from Environment variable using Powershell使用 Powershell 从环境变量中读取连接字符串
【发布时间】:2016-01-21 01:07:25
【问题描述】:
我有asp.net mvc应用程序,数据库连接字符串放在环境变量DbConn as
Min Pool Size=20;Application Name=***;**initial catalog=*****;server=***;Integrated Security=True;
现在我的问题是如何使用 Powershell 脚本读取此连接字符串。我知道如何读取整个连接字符串Get-ChildItem Env:DBConn,但我需要其中的一部分,例如初始目录、服务器等。
请指导我解决这个问题。
【问题讨论】:
标签:
asp.net-mvc
powershell
environment-variables
【解决方案1】:
您可以使用 -split、Trim() 和哈希表解析和标记连接字符串:
$DBConnValues = @{}
$env:DBConn.Trim(";") -split ";" |ForEach-Object {
$key,$value = $_ -split "="
$DBConnValues[$key] = $value
}
现在您可以按名称访问每个属性:
PS C:\> $DBConnValues["Server"]
ServerName
【解决方案2】:
这对于ConvertFrom-StringData 来说是一个完美的案例,这样您就可以将它变成一个自定义对象。
$props = $env:DBConn -replace ";","`r`n" | ConvertFrom-StringData
$dbConn = New-Object -TypeName psobject -Property $props
ConvertFrom-StringData 想要一个字符串,其中每一行都是一个键值对。我们通过用换行符替换分号来实现这一点。它返回一个哈希表,我们将其提供给 New-object 以获取自定义 PowerShell 对象。然后,您可以像在 PowerShell 中一样使用新对象。
$dbConn."Min Pool Size"