|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Выборка данных из XML |
|
|
PowerShell - Выборка данных из XML
|
Новый участник Сообщения: 8 |
Добрый день!
Возникла прям насущная необходимость автоматизации работы с отчетами в XML формате (генерит кучу файлов-отчетов по каждому ПК в сети). Нужно собрать из каждого файла необходимую информацию (учетные записи администраторов, пароли без ограничения по времени, гостевые учетки и т.д. - Administrators, Password Expiration, Guest Account). Как я вижу механизм разбора: 1. Считываем файл .xml в память 2. по нему проводим разбор интересующих нас вхождений (каждый пункт имеет вид типа Check ID="106" Grade="3" Type="1" Cat="1" Rank="8" Name="Password Expiration"). 3. Заносим полученную информацию в новый xml файл 4. Повторяем для каждого файла пункты 1-3. Не могу добраться до данных, находящихся в разделах XML - (в примере, Check ID="106", Нужны данные по пользователям, находящимся в подразделах <Head> <Col>User</Col> </Head>. команда [XML]$c=get-content c:\ps\1\convert.xml $p=$c.SecScan.Check не дает мне добраться до необходимых полей (такое впечатление, что они просто обрезаются) Проблемы, которые я вижу - "вычленить" только необходимые данные из строк, свести их вместе? Пример .xml файла: Если у кого есть готовые механизмы, или хотя бы сможет подробно показать/объяснить как работать с разбором такого типа - буду крайне признателен! |
|
Отправлено: 15:57, 07-08-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Dim4eg10:
P.S. Какой смысл дублировать тему: PowerShell - Скрипт разбора отчетов MBSA? |
|
Отправлено: 16:33, 07-08-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Доброе утро! Файл добавил. Про дублирование темы - mbsa мало кто с ним работал (вообще ни одного ответа), а xml - вот вы уже написали
![]() |
Отправлено: 09:27, 08-08-2017 | #3 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать PS > $xml.SecScan.Check | ? ID -eq 106 | % Detail | Format-List text : Accounts with a green check have passwords that do not expire but were specified in NoExpireOk.txt Head : Head Row : {Row, Row, Row, Row...} PS > $xml.SecScan.Check | ? ID -eq 106 | % Detail | % Head Col --- User PS > $xml.SecScan.Check | ? ID -eq 106 | % Detail | % Row Grade Col ----- --- 3 AdmOraMon 3 Barsov-AS 3 CCB 3 Guest 3 Ivanov-AS 3 testDLP 3 OPER1 3 OPER2 3 AlterAgentSrv 3 AlterAgentSrvTest 3 SB 3 SBEA 3 SBEU 3 SYSOPMCI 3 SrvtAgentOnline 3 SysOp 3 admback 3 admbackag 3 altst 3 bellcow 3 bellfish 3 ckfr 3 kav 3 kAdmin 3 kControl 3 kInter 3 kMonitor 3 kOper 3 kTrans 3 kTransport 3 qurto 3 scom 3 scom_sql 3 useruit 5 SUPPORT_388945a0 PS > $xml.SecScan.Check | ? ID -eq 106 | % Detail | % {$_.Row.Col} AdmOraMon Barsov-AS CCB Guest Ivanov-AS testDLP OPER1 OPER2 AlterAgentSrv AlterAgentSrvTest SB SBEA SBEU SYSOPMCI SrvtAgentOnline SysOp admback admbackag altst bellcow bellfish ckfr kav kAdmin kControl kInter kMonitor kOper kTrans kTransport qurto scom scom_sql useruit SUPPORT_388945a0 |
Отправлено: 09:49, 08-08-2017 | #4 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Больше спасибо! Но мне очень важно разобраться как что работает и в своих ошибках:
почему я не могу добраться до сведений во вкладке detail командами типа [XML]$c=get-content c:\ps\1\convert.xml $p=$c.SecScan.check | select detail или $p=$c.SecScan.check.detail p.s. в Вашем скрипте есть много вещей, которые я вижу в первый раз (конвеерные передачи %). Это относится чисто с разделу работы с xml или общие принципы работы с PS? (p.p.s какой раздел мануалов, книг почитать?) |
|
Отправлено: 10:05, 08-08-2017 | #5 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать PS > $p = $xml.SecScan.check | select detail PS > $p detail ------ Detail Detail Detail Detail PS > $p.detail Head Row ---- --- Head Row Head {Row, Row, Row, Row...} Head {Row, Row, Row, Row...} Head {Row, Row, Row} PS > $p.detail.Head[0].Col Drive Letter File System PS > $p.detail.Row[0].Col C: NTFS PS > $p.detail.Row[0] Grade Col ----- --- 5 {C:, NTFS} |
Отправлено: 10:20, 08-08-2017 | #6 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата Kazun:
[XML]$xml=get-content c:\test.xml P.s. может я делаю что-то неправильно, но результата у меня нет ![]() [XML]$xml=get-content c:\test.xml $p = $xml.SecScan.check | select detail После ввода $p.detail ничего нет на выходе |
|
Последний раз редактировалось Dim4eg10, 08-08-2017 в 11:06. Отправлено: 10:41, 08-08-2017 | #7 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата Dim4eg10:
Бегать циклами по объектному представлению xml катит только как частное решение на скорую руку. |
|
Отправлено: 10:56, 08-08-2017 | #8 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата Kazun:
PS C:\ps\1> [XML]$xml=get-content c:\test.xml $xml.SecScan.Check | ? ID -eq 106 | % Detail | Format-List Where-Object : Не удается привязать параметр "FilterScript". Не удается преобразовать значение "ID" типа "System.String" в тип "System.Management.Automation.ScriptBlock". строка:2 знак:23 + $xml.SecScan.Check | ? <<<< ID -eq 106 | % Detail | Format-List + CategoryInfo : InvalidArgument: ( ![]() + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand |
|
Отправлено: 10:58, 08-08-2017 | #9 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:04, 08-08-2017 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - [решено] Выборка данных из EventLog'a | Elven | Скриптовые языки администрирования Windows | 4 | 01-12-2016 14:48 | |
Разное - Выборка данных из двух таблиц | vision-d | Программирование и базы данных | 2 | 21-05-2014 19:17 | |
Любой язык - Выборка данных из txt | KarpovStas | Скриптовые языки администрирования Windows | 22 | 27-11-2013 17:16 | |
CMD/BAT - выборка данных из лога | MrVest | Скриптовые языки администрирования Windows | 0 | 20-11-2012 16:50 | |
выборка данных из нескольких страниц | vunder | Программирование и базы данных | 2 | 12-07-2004 20:33 |
|