У меня есть web.config с строкой соединения с сущностью.msdeploy и regex заменить значение строки подключения
То есть образец такой строки:
<add name="MyEntities" connectionString="metadata=res://*/GeneratedModel.MyModel.csdl|res://*/GeneratedModel.MyModel.ssdl|res://*/GeneratedModel.MyModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\SQLEXPRESS;initial catalog=CRAP;persist security info=True;user id=MyUser;password=password;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
Я хочу заменить Initial Catalog ака имя базы данных «дерьмом» с новым именем «TEST»
Этот код должен работать так, как раньше работал с другой командой msdeploy.exe.
я просто должен был реструктурировать переменная $ MSD ...
$newActiveTargetDbName = 'TEST';
$msd = "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe"
$iisPath = "MyWebSite/MyService,wmsvc='MyMachine:MyPort/msdeploy.axd',userName='username',password='password'"
& $msd -verb=sync -allowUntrusted -dest=contentPath="$iisPath" -source=contentPath="$iisPath" -setParam=kind="TextFile,match=""(MyEntities.*?catalog=).*?(;)"",scope=web.config$,value=`$1$newActiveTargetDbName`$2"
Когда я запускаю выше заявление, я получаю эту строку подключения в файле web.config:
<add name="$1TEST$2persist security info=True;user id=MyUser;password=password;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
It мне кажется, что мне нужны какие-то одиночные/двойные кавычки и т. д. ... но я пробовал на самом деле всевозможные комбинации и сводил меня с ума.
Как это исправить?
UPDATE
Это синтаксис оператора MSDeploy как РАБОТАЛ, прежде чем я изменил его!
$iisServicePath = 'MyWebsite/MyService';
$iisPath = "$iisServicePath,computerName=%TargetComputerName%,userName=%NTUserName%,password=%NTUserPassword%"
& "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" `
"-source=contentPath=$iisPath" `
'-verb=sync' `
'-verbose' `
'-allowUntrusted' `
"-dest=contentPath=$iisPath" `
"-setParam=kind=TextFile,match=""(MyEntities.*?catalog=).*?(;)"",scope=web.config$,value=`$1$newActiveTargetDbName`$2";
Я обновил свой вопрос с помощью прежнего рабочего образца. Там вы видите, что -dest = contentPath полностью в порядке. Мне понравилось ваше окончательное предложение линии и получить эту ошибку: msdeploy.exe: Ошибка: непризнанный аргумент 'match = (ErpProductsEntities. *? Catalog =). *? (;)'. Все аргументы должны начинаться с «-». – Elisabeth
Ваш многострочный образец генерирует исключения/ошибки. Я знаю, что вы сказали, что не знакомы с msdeploy, но вы действительно должны попробовать свой образец в PS IDE, иначе люди думают, что образец может работать или быть решением :-) – Elisabeth
@Elisabeth, вы попробовали пример с одной строкой? У меня была заметка после многострочного примера: *** Примечание: *** * этот преднамеренно не правильный шикарный многострочный синтаксис, потому что я не хочу, чтобы back-ticks (') нарушали подсветку синтаксиса. * – VertigoRay