Показать полную графическую версию : [решено] Переменные из данных в txt файле
Foreigner
04-06-2015, 10:22
breakfruit, Должен любой, в том числе скрипты, если в них правильно оформлены параметры -- param ()
breakfruit
04-06-2015, 10:27
*ушел гуглить правильность оформления параметров*
Всем еще раз огромное спасибо.
breakfruit
05-06-2015, 11:31
Всем привет еще раз. С вами - заметки начинающего PoSH'ера.
Как вы помните, проблема была в том, что бы убрать вот такие спагетти
foreach ($hGroup in $InputData)
{
Add-IPRule -VMId $dGroup_ID -Name $hGroup.name -Action $hGroup.action -Description $hGroup.description -Protocol $hGroup.protocolNum -Type $hGroup.Direction -LocalPorts $hGroup.LocalPortsString -RemotePorts $hGroup.RemotePortsString
}
По совету бывалых, попытался убрать через хэш-таблицу. Получилось следующее. Немного изменив переменные
$ruleset= @{
"VMId" = "$dGroup_ID";
"Name" = "$Group.name";
"Action" = "$Group.action";
"Describtion" = "$Group.description";
"Protocol" = "$Group.protocolNum";
"Type" = "$Group.Direction";
"LocalPorts" = "$Group.LocalPortsString";
"RemotePorts" = "$Group.RemotePortsString";
}
foreach ($Group in $InputData)
{
Add-IPRule @ruleset
}
В итоге - получаю ошибку, гласящуую, что
Add-IPRule : Cannot bind parameter 'Action'. Cannot convert value "Allow KERBEROS.action" to type "(убрал, дабы не было рекламы.VirtualFirewall.CommonDataTypes.RuleAction". Error: "Unable to match the
identifier name Allow KERBEROS.action to a valid enumerator name. Specify one of the following enumerator names and try again: AllowNoSPI, Block, Allow"
Я понимаю, что проблема в том, что почему-то в параметр Action валится значения параметра Name, но я хоть убей понять не могу - почему?
После выполнения кода, даже с ошибками, картина переменных следующая
PS> $group.name
Allow KERBEROS
PS> $group.action
Value
-----
Allow
Не туда вынесли и не надо двойных кавычек:
foreach ($Group in $InputData)
{
$ruleset= @{
"VMId" = "$dGroup_ID";
"Name" = $Group.name;
"Action" = $Group.action;
"Describtion" = $Group.description;
"Protocol" = $Group.protocolNum;
"Type" = $Group.Direction;
"LocalPorts" = $Group.LocalPortsString;
"RemotePorts" = $Group.RemotePortsString;
}
Add-IPRule @ruleset
}
breakfruit
05-06-2015, 11:43
Т.е. хэш-таблица должна быть прописана внутри функции, всегда? Нельзя ее определить изначально?
Foreigner
05-06-2015, 17:10
breakfruit, Имхо не обязательно:
$par = @{ Path = 'D:'; Force = $true }
function test {
gci @par
}
test
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.