Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Вернуть символические переменные из функции

Ответить
Настройки темы
PowerShell - [решено] Вернуть символические переменные из функции

Аватара для blackmane

Пользователь


Сообщения: 69
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Доброго дня!
Есть код, который берет настройки скрипта из файла:
Код: Выделить весь код
#Выгребаем настройки из файла
	$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
Использовать не получится.
Варианты с массивами и хэш-таблицами не подходят - придется переписывать весь имеющийся код + вид будет не комильфо + в коде не будет смысла - он сам работает с хэш-таблицей.

Как осуществить возврат всех созданных переменных из функции?
Спасибо.

Отправлено: 23:13, 17-10-2014

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


1) Объявить переменные уровня global,script(set-variable -Scope).
2) Вернуть hash-массив($f_res). Вообще слабо понимаю зачем создавать переменные заново, когда уже есть значения.

Отправлено: 12:06, 18-10-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для blackmane

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Kazun:
Вообще слабо понимаю зачем создавать переменные заново, когда уже есть значения. »
Я Вас не понял.

Цитата Kazun:
Вернуть hash-массив($f_res) »
Если я верну хэш-массив, то для получения значения переменной $Dest, мне придется писать $f_res.Dest, или я не прав?

Отправлено: 12:43, 18-10-2014 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Не значение переменной $Dest, а значение ключа Dest. $f_res.Dest - можно и так, или если есть сильное желание создать уже переменную в не функции - set-variable -name $key -value $f_res[$key]

Отправлено: 15:14, 18-10-2014 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Вернуть символические переменные из функции

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Переменные из файла Deman4ig Скриптовые языки администрирования Windows 5 25-02-2013 22:36
собрать переменные из цикла в одну переменную while binders Вебмастеру 7 16-09-2011 20:11
[решено] Пропадают переменные из форм Bask76 Вебмастеру 5 26-07-2008 22:02
CMD/BAT - [решено] как правильно передать переменные подпрограмме из цикла for akrav Скриптовые языки администрирования Windows 4 07-01-2008 17:51
Как переменные из одного скрипта передать ? Kudryavcev Dmitry Вебмастеру 4 04-10-2003 03:10




 
Переход