blackmane
17-10-2014, 23:13
Доброго дня!
Есть код, который берет настройки скрипта из файла:
#Выгребаем настройки из файла
$f_set = [System.IO.File]::ReadAllText("$include_settings")
$start = $f_set.IndexOf("$begin")+$begin.Length
$end = $f_set.IndexOf("$stop")
$f_res = $f_set.Substring($start, $end-$start) | ConvertFrom-StringData
foreach ($key in $($f_res.keys)) {
set-variable -name $key -value $f_res[$key]
}
сам файл в таком виде (имя_переменной = значение_переменной):
[r_start]
Dest = "B:\\Backup\\Full"
Source = "D:\\"
[r_end]
[start]
bla = "bla"
[end]
Код в итоге создает (точнее переопределяет значения) переменные для работы скрипта.
Он отлично отрабатывает, но этот вариант не является универсальным, хотелось бы завернуть его в функцию, дабы, указав другие входящие параметры, я мог бы использовать функцию с другими скриптами.
Но, как я ни пытался, а переменные мне не вытащить из функции, проблема в том, что заблаговременно имя переменной неизвестно и вариант:
return $name_var1,$name_var2...,$name_varN
Использовать не получится.
Варианты с массивами и хэш-таблицами не подходят - придется переписывать весь имеющийся код + вид будет не комильфо + в коде не будет смысла - он сам работает с хэш-таблицей.
Как осуществить возврат всех созданных переменных из функции?
Спасибо.
Есть код, который берет настройки скрипта из файла:
#Выгребаем настройки из файла
$f_set = [System.IO.File]::ReadAllText("$include_settings")
$start = $f_set.IndexOf("$begin")+$begin.Length
$end = $f_set.IndexOf("$stop")
$f_res = $f_set.Substring($start, $end-$start) | ConvertFrom-StringData
foreach ($key in $($f_res.keys)) {
set-variable -name $key -value $f_res[$key]
}
сам файл в таком виде (имя_переменной = значение_переменной):
[r_start]
Dest = "B:\\Backup\\Full"
Source = "D:\\"
[r_end]
[start]
bla = "bla"
[end]
Код в итоге создает (точнее переопределяет значения) переменные для работы скрипта.
Он отлично отрабатывает, но этот вариант не является универсальным, хотелось бы завернуть его в функцию, дабы, указав другие входящие параметры, я мог бы использовать функцию с другими скриптами.
Но, как я ни пытался, а переменные мне не вытащить из функции, проблема в том, что заблаговременно имя переменной неизвестно и вариант:
return $name_var1,$name_var2...,$name_varN
Использовать не получится.
Варианты с массивами и хэш-таблицами не подходят - придется переписывать весь имеющийся код + вид будет не комильфо + в коде не будет смысла - он сам работает с хэш-таблицей.
Как осуществить возврат всех созданных переменных из функции?
Спасибо.