Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.12.2024
Сообщений: 2

Замена одного значение на другое в скрипте (словарь?)

20.12.2024, 12:51. Показов 661. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, скрипт на powershell парсит XML файл (лог винды) и выдергивает оттуда строчку которую потом записывает в БД на другой сервер в соответствующий столбец таблицы)
PowerShell
1
2
3
4
5
6
7
8
9
10
11
...
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
...
$Action = $event.Event.EventData.Data[8]."#text"
...
$sql.CommandText = "INSERT INTO table  (action) VALUES ('$Action')"
}
}
Там могут быть несколько кодов вида %%1537 и другие, хочу чтобы он вместо записи %%1537 в таблицу БД записывал слово DELETE, а вместо других кодов - другие слова.

Попробовал через словарь

PowerShell
1
2
3
$dictionary = @{'%%1537'='DELETE'; '%%4417'='WRITE'}
$ActionCode = $event.Event.EventData.Data[8]."#text"
$Action = $($dictionary[$ActionCode])
Но в БД идут пустые строчки в таблицу, как следует правильно сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2024, 12:51
Ответы с готовыми решениями:

Передать словарь из одного окна в другое
Добрый день! Только начинаю изучать WPF и язык. Столкнулась с такой проблемой: есть MainWindow, в которое мне нужно передать словарь...

Замена одного слова на другое
Добрый день, Не могу понять как работает замена слова: section .text global_start ; должно быть объявлено для линкера...

Замена одного слова на другое
С++ // Входной текстовый файл содержит отрывок литературного произведения. // Необходимо сформировать выходной файл, заменив во всех...

4
2804 / 502 / 120
Регистрация: 26.09.2020
Сообщений: 949
Записей в блоге: 5
20.12.2024, 14:00
Sample event.xml (https://learn.microsoft.com/en... event-4663)
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
 <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" /> 
 <EventID>4663</EventID> 
 <Version>1</Version> 
 <Level>0</Level> 
 <Task>12800</Task> 
 <Opcode>0</Opcode> 
 <Keywords>0x8020000000000000</Keywords> 
 <TimeCreated SystemTime="2015-09-18T22:13:54.770429700Z" /> 
 <EventRecordID>273866</EventRecordID> 
 <Correlation /> 
 <Execution ProcessID="516" ThreadID="524" /> 
 <Channel>Security</Channel> 
 <Computer>DC01.contoso.local</Computer> 
 <Security /> 
 </System>
<EventData>
 <Data Name="SubjectUserSid">S-1-5-21-3457937927-2839227994-823803824-1104</Data> 
 <Data Name="SubjectUserName">dadmin</Data> 
 <Data Name="SubjectDomainName">CONTOSO</Data> 
 <Data Name="SubjectLogonId">0x4367b</Data> 
 <Data Name="ObjectServer">Security</Data> 
 <Data Name="ObjectType">File</Data> 
 <Data Name="ObjectName">C:\\Documents\\HBI Data.txt</Data> 
 <Data Name="HandleId">0x1bc</Data> 
 <Data Name="AccessList">%%4417 %%1537</Data> 
 <Data Name="AccessMask">0x6</Data> 
 <Data Name="ProcessId">0x458</Data> 
 <Data Name="ProcessName">C:\\Windows\\System32\\notepad.exe</Data> 
 <Data Name="ResourceAttributes">S:AI(RA;ID;;;;WD;("Impact\_MS",TI,0x10020,3000))</Data> 
 </EventData>
</Event>
PowerShell
1
2
3
4
5
$Event = [xml] (Get-Content .\event.xml)
$Event.Event.EventData.Data.GetEnumerator() |
  ? Name -eq AccessList |
    % { $v = $_.'#text' -split ' ';  $v |
      % { $dictionary[$_] } }
1
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,888
20.12.2024, 14:06
Цитата Сообщение от Spongie Посмотреть сообщение
как следует правильно сделать?
Правильно - это показать код, относящийся к записи в таблицу БД, полностью.
0
0 / 0 / 0
Регистрация: 20.12.2024
Сообщений: 2
20.12.2024, 15:18  [ТС]
Вообщем сделал вот так, криво конечно...
PowerShell
1
2
3
4
$Action = $event.Event.EventData.Data[8]."#text"
$Action = $Action.Replace('%%1537','DELETE ')
$Action = $Action.Replace('%%4417','WRITE ')
$Action = $Action.Replace('%%4418','APPEND ')
0
2804 / 502 / 120
Регистрация: 26.09.2020
Сообщений: 949
Записей в блоге: 5
20.12.2024, 17:35
Цитата Сообщение от Spongie Посмотреть сообщение
Вообщем сделал вот так, криво конечно...
Почему $Action, AccessList же?
Чего отказались от словаря работает же?
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
$SampleEvent = [xml] @"
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
 <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}"/> 
 <EventID>4663</EventID> 
 <Version>1</Version> 
 <Level>0</Level> 
 <Task>12800</Task> 
 <Opcode>0</Opcode> 
 <Keywords>0x8020000000000000</Keywords> 
 <TimeCreated SystemTime="2015-09-18T22:13:54.770429700Z" /> 
 <EventRecordID>273866</EventRecordID> 
 <Correlation /> 
 <Execution ProcessID="516" ThreadID="524" /> 
 <Channel>Security</Channel> 
 <Computer>DC01.contoso.local</Computer> 
 <Security /> 
 </System>
<EventData>
 <Data Name="SubjectUserSid">S-1-5-21-3457937927-2839227994-823803824-1104</Data> 
 <Data Name="SubjectUserName">dadmin</Data> 
 <Data Name="SubjectDomainName">CONTOSO</Data> 
 <Data Name="SubjectLogonId">0x4367b</Data> 
 <Data Name="ObjectServer">Security</Data> 
 <Data Name="ObjectType">File</Data> 
 <Data Name="ObjectName">C:\\Documents\\HBI Data.txt</Data> 
 <Data Name="HandleId">0x1bc</Data> 
 <Data Name="AccessList">%%4417 %%1537</Data> 
 <Data Name="AccessMask">0x6</Data> 
 <Data Name="ProcessId">0x458</Data> 
 <Data Name="ProcessName">C:\\Windows\\System32\\notepad.exe</Data> 
 <Data Name="ResourceAttributes">S:AI(RA;ID;;;;WD;("Impact\_MS",TI,0x10020,3000))</Data> 
 </EventData>
</Event>
"@
 
$dictionary    = @{'%%1537'='DELETE'; '%%4417'='WRITE'}
$AccessList    = $SampleEvent.Event.EventData.Data[8].'#text'
$AccessListStr = $dictionary[($AccessList -Split ' ')] -join ', '
 
# Замена на строковые значения
$SampleEvent.Event.EventData.Data[8].'#text' = $AccessListStr
 
# поглядеть, чего вышло
$SampleEvent.Event.EventData.Data
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.12.2024, 17:35
Помогаю со студенческими работами здесь

Замена одного выражения на другое
Добрый день.Прошу помочь с решением следующей задачи. Есть вот такое выражение (Уравнение 1), оно считает только до n 100, дальше...

Замена одного слова на другое
Здраствуйте. В рядок через пробел записаны слова(допустим названия зарубежных городов). Необхобимо заменить их на другие(наши города). Ввод...

Замена одного слова на другое
Здравствуйте!!!! Помогите плз. Есть задача: Строки. Написать программу, в которой пользователь вводит строку текста, слово, которое...

Замена одного слова на другое
Как заменить ячейки в VBA? Например, я написал в Texbox1 &quot;бурундук&quot;, нажал на кнопку и в ячейке A1 вместо слова: &quot;Ракета&quot;...

Замена одного слова в строке на другое
Как заменить read на study ? int main(int argc, char**argv) { string /*const*/ text1 = &quot;I'm reading\n&quot;; string /*const*/ text2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru