2016-01-07 267 views
1

我剛開始使用Powershell,我試圖拆分一個保存爲字符串的連接字符串。我嘗試過正則表達式和數組拆分,但自從我學習以後,我想問你們一些入門級的想法。拆分一個web.config連接字符串

下面是一個連接字符串示例,我試圖將每個關鍵區域分配給一個變量。

@{connectionString=Data Source=database;Initial Catalog=catalog;User ID=userid;Password=password} 

我會理想地喜歡每個可用於變量的值。

感謝您的閱讀。

回答

1

爲了簡單起見,我從字符串中刪除了@{}。我相信你可以對字符串做一些預處理以修剪掉這些字符串。

$string = "connectionString=Data Source=database;Initial Catalog=catalog;User ID=userid;Password=password" 
$res = $string.Split(";") 
$connString = $res[0] 
$initialCatalog = $res[1] 
$userId = $res[2] 
$password = $res[3] 
+0

謝謝您的回覆。我將序列調整到了字符串修飾符函數中,並且它工作正常! –

+0

如果密碼中包含分號,則此功能完全不起作用,如下所示: 「connectionString = Data Source = database; Initial Catalog = catalog; User ID = userid; Password ='pass; word'」 –

1

如果用一個換行符替換;,您可以使用ConvertFrom-StringData的值解析成一個哈希表:

PS> $connectionString = 'Data Source=database;Initial Catalog=catalog;User ID=userid;Password=password' 
PS> $connectionValues = $connectionString -replace ';',"`r`n" |ConvertFrom-StringData 
PS> $connectionValues 

Name       Value 
----       ----- 
User ID      userid 
Data Source     database 
Initial Catalog    catalog 
Password      password 
+0

謝謝,你的迴應我會嘗試這個練習。 –

6

而不是手動解析連接字符串,則可以使用SqlConnectionstringbuilder

$builder = New-Object System.Data.SqlClient.SqlConnectionStringBuilder -argumentlist "Data Source=database;Initial Catalog=catalog;User ID=userid;Password=password"; 
$Builder["User Id"]; 
$builder["Data Source"]; 
$builder["Initial Catalog"];