PDA

Показать полную графическую версию : [решено] Переменные из данных в txt файле


Страниц : 1 [2]

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

Kazun
05-06-2015, 11:34
Не туда вынесли и не надо двойных кавычек:
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