2017-02-01 24 views
0

私はpowershellを新しく使いこなしていますが、それ以上のものを手に入れようとしています。Powershell:検索と置換を使用してテキスト文書内の一意の値を置換する

私はSQL接続文字列を指定するテキストドキュメントを持っています(この質問には重要ではありません)。私が探している2つの値は、SQL Server名とデータベース名です。 SQL Serverの名前は、ローカルインスタンスであるためデータベース名は変わりませんので、各マシンで異なります。

基本的に、ここでの文字列は次のとおりです。

localSQLConString =データベース= Internal_TrainingProject;サーバー= MBDatabase \ SQLEXPRESS14;統合セキュリティ=真;

私はそうのように(ユーザーに求め使用して)変数としての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 =データベースのような何かを期待していた= $ DB;サーバー= $ SQL;統合セキュリティ=真;

しかし、変数間の共通テキストを分割するのに問題があります。

ご協力いただければ幸いです。

答えて

0

は、迅速な対応のために、この

$connectionstring="Database=Internal_TrainingProject;Server=MBDatabase\SQLEXPRESS14;Integrated Security=True;" 

#split connectionstring to hash table 
[email protected]{} 
$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 
+0

おかげのようなものを試してみてください。これは間違いなく私がやろうとしていることのための変数を得るのに役立ちます。私が探している次のことは、この情報を使って実際にどのテキストをつかんで置き換えるかを指定する方法です。私はServer =とDatabase =を呼び出すことができますが、サーバーやデータベース名の文字数は変わります。 =と;の間の文字列を取得する方法はありますか?たとえば、これが私が置き換えた文字列だった場合、localSQLConString = Database = Demodatabase; Server = DemoServer \ SQLEXPRESS14; Integrated Security = True; –

関連する問題