1

[powershell スクリプトで] SQL 更新クエリを使用して、列にあるマシン名を更新しています。

列の値は URL として保存されます。したがって、マシン名は文字列の一部です。

(列名: URL 列の値の例: "http://Machine1:80/Impl100/Core/Data/Config.0")

次のクエリを使用して更新を行っています。

$UpdateQuery="UPDATE [$DatabaseName].[dbo].[$TableName] 
SET $columnName=Replace("$ColumnName", '$OldMachineName', '$NewMachineName');"

私の古いマシン名が「Machine1」で、「AppMachine1」に置き換えるとします。スクリプトを実行すると、「AppMachine1」が更新されます。しかし、スクリプトを 2 回目に実行すると、Machine1 は AppMachine1 の一部であるため、「AppAppMachine1」として更新されます。

更新前にカラムの値を取得してマシン名を確認することはできますか?

これを行う方法?

4

2 に答える 2

1

これを試して

$UpdateQuery="UPDATE [$DatabaseName].[dbo].[$TableName] 
SET $columnName=Replace("$ColumnName", '$OldMachineName', '$NewMachineName')
WHERE "$ColumnName" <> '$NewMachineName';"
于 2012-07-24T09:32:16.007 に答える
1

2 つの先頭のスラッシュを含めます。

 ... -replace '//machine1','//AppAppMachine1'

また、引用符で囲まれた変数を二重引用符で囲む必要があります。一重引用符は変数の展開を無効にし、その結果、変数はその値に置き換えられません。

二重置換の例を次に示します。

PS> $url = 'http://machine1:80/Impl100/Core/Data/Config.0'
PS> $url -replace '//machine1','//AppAppMachine1' -replace '//machine1','//AppAppMachine1'

http://AppAppMachine1:80/Impl100/Core/Data/Config.0
于 2012-07-24T12:36:18.447 に答える