我对powershell非常陌生,但试图接受更多的东西加速。
我有一个指定SQL连接字符串的文本文档(对这个问题并不重要)。我正在寻找的两个值是SQL Server Name和数据库名称。每台计算机上的SQL Server名称都不同,因为它是本地实例,但数据库名称将保持不变。
基本上,这是字符串:
localSQLConString = Database = Internal_TrainingProject; Server = MBDatabase \ SQLEXPRESS14; Integrated Security = True;
我考虑将这些作为变量(使用用户提示)拉入Powershell,如下所示:
param (
[string]$SQL = $( Read-Host "Input SQL Server Instance Name." )
[string]$DB = $( Read-Host "Input SQL Database Name." )
)
(Get-Content "C:\Program Files (x86)\Test.txt")
但是,我在查找和更换部件方面遇到了麻烦。每个文本文件都有共同点,如localSQLConString =,Database =和Server =。
我希望做一些像
这样的事情localSQLConString = Database = $ DB ; Server = $ SQL ; Integrated Security = True;
但我在拆分变量之间的公共文本时遇到了麻烦。
非常感谢任何人的帮助。
答案 0 :(得分:0)
尝试类似这样的事情
$connectionstring="Database=Internal_TrainingProject;Server=MBDatabase\SQLEXPRESS14;Integrated Security=True;"
#split connectionstring to hash table
$Hash=@{}
$connectionstring -split ";" | where {$_ -ne ""} | %{$Hash[$_.Split('=')[0]]=$_.Split('=')[1]}
#modification elements
$Hash['Server']=$SQL
$Hash['Database']=$DB
#create new connectionstring with elements modified
$Newconnectionstring=($Hash.Keys | %{"$_=$($Hash[$_])"}) -join ";"
$Newconnectionstring