У меня есть один config.xml
файл для конфигурации и другой (steps.xml
), который действует как руководство и содержит шаги, которые генерируют сценарии для выполнения.
config.xml
:
<CFG>
<Server>sql-server.com</Server>
<Database>mySQLDB</Database>
</CFG>
steps.xml
:
<Steps>
<Step no="1">
<script>
USE [<v>$configs.CFG.Database</v>]
UPDATE server_name SET name = '<v>$configs.CFG.Server</v>'
</script>
</Step>
</Steps>
Я использую <v></v>
, чтобы сообщить моему сценарию, где находятся переменные.Я не знаю, является ли это хорошим способом.
Затем я запускаю этот скрипт для анализа файлов:
$configFile = 'd:\ps\config.xml'
$stepsfile = 'd:\ps\steps.xml'
[xml]$steps = Get-Content -Path $stepsfile
[xml]$configs = Get-Content -Path $configFile
$t = $Steps.Steps.Step[0].script.v
foreach ($var in $t){
$exec = Invoke-Expression $var
# use $exec to form a working script
}
Я могу разрешить фактическую информацию из файла конфигурации, ноЯ застрял на том, чтобы собрать его обратно.Я знаю, что могу использовать это, чтобы получить полный текст сценария:
$Steps.Steps.Step[0].script."#text"
Но я растерялся, как я могу точно определить местоположение переменных, чтобы вставить в него разрешенные имена и сформировать используемый сценарий.
Вывод, который я пытаюсь достичь, должен быть:
USE [mySQLDB]
UPDATE server_name SET name = 'sql-server.com'