Это не ответ о том, как извлечь информацию из текста сообщения, а о том, как избежать необходимости иметь дело с форматированным текстом в первую очередь. Похоже, вы пытаетесь проанализировать сообщение для событий журнала событий с идентификатором 307. Этот код адаптирован из PowerShell One-Liner для аудита заданий печати на сервере печати Windows * .
Используя Get-WinEvent
командлет , вы можете запросить определенный журнал (Microsoft-Windows-PrintService/Operational
) для определенных событий (307
), а затем нужно просто найти и добавить значимое имя для каждого свойство ...
$eventFilter = @{
LogName = 'Microsoft-Windows-PrintService/Operational';
ID = 307;
}
Get-WinEvent -FilterHashTable $eventFilter `
| Select-Object -Property `
'TimeCreated', `
@{ Name = 'JobId'; Expression = { $_.Properties[0].Value }; }, `
@{ Name = 'JobName'; Expression = { $_.Properties[1].Value }; }, `
@{ Name = 'UserName'; Expression = { $_.Properties[2].Value }; }, `
@{ Name = 'MachineName'; Expression = { $_.Properties[3].Value }; }, `
@{ Name = 'PrinterName'; Expression = { $_.Properties[4].Value }; }, `
@{ Name = 'PortName'; Expression = { $_.Properties[5].Value }; }, `
@{ Name = 'ByteCount'; Expression = { $_.Properties[6].Value }; }, `
@{ Name = 'PageCount'; Expression = { $_.Properties[7].Value }; }
Для события с таким сообщением ...
Документ 1, Распечатать документ, принадлежащий UserName на \\ MachineName был
распечатывается в Microsoft Print в PDF через порт X: \ Directory \ File.ext.
Размер в байтах: 12345. Распечатано страниц: 1. Никаких действий пользователя не требуется.
... приведенный выше код выведет объект, подобный этому ...
TimeCreated : 3/28/2019 5:36:41 PM
JobId : 1
JobName : Print Document
UserName : UserName
MachineName : \\MachineName
PrinterName : Microsoft Print to PDF
PortName : X:\Directory\File.ext
ByteCount : 12345
PageCount : 1
Вы можете передать вышеприведенную команду в Export-CSV
, чтобы создать файл CSV, или даже просто использовать Out-GridView
, чтобы просмотреть и отфильтровать данные непосредственно в PowerShell. В любом случае, анализ не требуется.