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

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

Ответить
Настройки темы
PowerShell - [решено] Переменные из данных в txt файле

Новый участник


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


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

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


Изменения
Автор: breakfruit
Дата: 02-06-2015
Всем доброго времени суток. Для меня, по-прежнему, PoSH - дремучий лес. И вновь появилась (поставили ) интересную задачу.

Есть txt файл с некими параметрами
Код: Выделить весь код
Id                : 39d525ee-de75-446c-84bd-0d0ff08d3b8d
TypeOfRule        : IP
VMId              : e0f63469-1c5e-4c8e-a0ae-5b92e7cfe1da
Name              : ICMP Allow in
Description       : 
Direction         : Inbound
Action            : Allow
LocalPorts        : {0-65535}
RemotePorts       : {0-65535}
RemoteVMs         : {}
TargetAddressType : Any
VlanId            : 4095
Protocol          : ICMP
ProtocolNum       : 1
ProtocolString    : ICMP
RemotePortsString : 0-65535
LocalPortsString  : 0-65535
RemoteIPs         : Any
RemoteMACString   : Any
Нужно задать переменные, используя почти все указанные значения полей в файле. Т.е. то, что после ":" идет. Я так понимаю, тут потребуется уже что-то более серьезное, чем foreach, который я уже худо бедно освоил. Но вот что именно, загуглился уже весь.

Заранее признателен за любую помощь. А если еще и наводка будет на то, что почитать. Конкретно по данной тематике - с меня напитки и плюшки по почте России :D

Отправлено: 16:43, 01-06-2015

 

Ветеран


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

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


Код: Выделить весь код
PS > $val = (Get-Content f.txt) -replace " : ","=" | ConvertFrom-StringData
PS > $val.id
39d525ee-de75-446c-84bd-0d0ff08d3b8d

PS > $val.Name
ICMP Allow in
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:48, 01-06-2015 | #2



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

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


Новый участник


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

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


Kazun, примного благодарен! Это очень полезно, но я, в виду понедельника, не все вводные сказал. В текстовом файле таких таблиц может быть две и более. В этом случае, я так понимаю, результат будет другим...


Т.е. Поля те же - значения разные.

-------
И на груди его могучей три волосины сбились в кучу.


Последний раз редактировалось breakfruit, 01-06-2015 в 18:08.


Отправлено: 18:01, 01-06-2015 | #3


Забанен


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

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


breakfruit, так Вам что, собственно, нужно: рандомная выборка из оных таблиц или какое-то определенное свойство? И потом, фраза "я так понимаю" обычно подразумевает некое размытое представление некой концепции. Чтобы понять происходящее:
Код: Выделить весь код
PS> $a = (gc foo) -replace':','=' | ConvertFrom-StringData
#используйте метод объекта GetType
PS> $a.GetType()
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:50, 01-06-2015 | #4


Ветеран


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

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


Цитата breakfruit:
но я, в виду понедельника, не все вводные сказал. В текстовом файле таких таблиц может быть две и более. »
Ждём от Вас подобный файл, упакованный в архив и либо прикреплённый к сообщению, либо выложенный на RGhost.

Отправлено: 22:13, 01-06-2015 | #5


Новый участник


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

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



greg zakharov, не совсем рандомная. Есть сторонний командлет, в котором отсутствует команда ЭКспорта / импорта. РЕчь о FireWallе.
Цитата greg zakharov:
И потом, фраза "я так понимаю" обычно подразумевает некое размытое представление некой концепции »
а оно, увы, так и есть... Так как без толковой теории я сразу перешел к практике. Увы, времени мало, и курсов никто не оплачивает. Кризис же. Потом используем то, что имеем. Гугл, PoSH ISE + развиваем логику.


По порядку.
1. Есть группа (не просто выборка клиентов, а именно группа, в которую включены клиенты) юнитов у которых есть определенные правила. Условно Г1
2. Необходимо эти правила скопировать для другой группы юнитов. Условно Г2

Моя идея в том, что бы:
1. Экспортировать правила в txt
2. Распарсить его
3. Значению каждого поля задать переменную
4. Применить правила используя, полагаю, foreach.

Это пока все, до чего я додумался.

Правила в FireWall создаются на основе VmID (второе поле в выгруженном файле).

Iska, пример в аттаче.

ParentGroupRules.zip

Отправлено: 08:15, 02-06-2015 | #6


Ветеран


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

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


Используйте Export-CliXml и на требуемой машине Import-Clixml, так избежите подобных проблем.

Если формат неизменен txt:

Код: Выделить весь код
$d = (Get-Content ParentGroupRules.txt) -match " : "

$val = for($i = 0; $i -lt $d.count; $i+=19)
{
	($d[$i..($i+19)] | Out-String) -replace " : ", "=" | ConvertFrom-StringData
}

PS C> $val[0].Name
DNS traffic
PS > $val[1].Name
HTTP traffic
PS > $val[1].VlanId
4095

Последний раз редактировалось Kazun, 02-06-2015 в 08:34.

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:20, 02-06-2015 | #7


Новый участник


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

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


Kazun, не совсем понял "Если формат неизменен txt"? В смысле, что дальше код идет при условии выгрузки в txt файл? Если использовать CliXml - скрипт будет отличаться, правильно я понимаю?

-------
И на груди его могучей три волосины сбились в кучу.


Отправлено: 08:42, 02-06-2015 | #8


Ветеран


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

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


FireWallе | Export-CliXml -Path rules.xml

Переходим на другую машину и выполняем:

$val = Import-CliXml -Path rules.xml
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:17, 02-06-2015 | #9


Новый участник


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

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


Kazun, попробую. Отпишусь по результатам.

-------
И на груди его могучей три волосины сбились в кучу.


Отправлено: 09:23, 02-06-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Выбор данных из txt файла leks71 Скриптовые языки администрирования Windows 2 13-04-2015 20:00
Любой язык - Выборка данных из txt KarpovStas Скриптовые языки администрирования Windows 22 27-11-2013 17:16
CMD/BAT - выполнение команд из списка в txt файле systemroot Скриптовые языки администрирования Windows 2 12-02-2011 17:49
CMD/BAT - [решено] Ввод данных в переменную из txt-файла river123 Скриптовые языки администрирования Windows 1 10-01-2011 18:43
CMD/BAT - [решено] Выбор данных из txt по маске hxygen Скриптовые языки администрирования Windows 4 24-10-2010 15:52




 
Переход