Я пытаюсь написать сценарий PowerShell, который выполняется событием.
Этот скрипт PowerShell должен запустить:
Get-WinEvent -FilterHashtable @{Logname='security';ID=$instanceID} -MaxEvents 1
чтобы получить Событие, которое вызвало сценарий PS.
Пока все хорошо, как только у меня будет это событие, я хочу отправить электронное письмо. Это письмо должно содержать некоторый контент из сообщения о событии.
Например: событие с кодом 4720 (была создана учетная запись пользователя)
Учетная запись пользователя xx была создана xx во время xx.
Теперь у меня есть около 10 идентификаторов событий, на которые я хочу ответить по электронной почте. Эти идентификаторы событий имеют различия в сообщении.
Есть ли динамический способ сделать это?
Я попробовал следующее:
param(
[Parameter(Mandatory = $true)]$instanceID
)
#$instanceIDs = @(4661,4662,5139,5136,5137,5138,5139,5141,4720,4722,4723,4724,4725,4726,4738,4740,4767,4780,4781,4794,5376,5377,4741,4742,4743,4727,4728,4729)
$event = Get-WinEvent -FilterHashtable @{Logname='security';ID=$instanceID} -MaxEvents 1
Function EventIDxxx{
Get-WinEvent -FilterHashtable @{Logname='security';ID=$instanceID} -MaxEvents 1 |
Select-Object -Property timecreated,
@{label='username';expression={$_.properties[0].value}},
@{label='computername';expression={$_.properties[1].value}}
}
Но я должен создать для каждого события новую функцию.
У кого-нибудь есть идея?
Большое спасибо
** Редактировать **
Я хотел бы иметь скрипт Powershell, который считывает сообщение о событии и записывает нужные мне части в переменные.
A user account was created.
Subject:
Security ID: Contoso\Conlil
Account Name: Conlil
Account Domain: Contoso
Logon ID: 0x1468731E
New Account:
Security ID: Contoso\ASD
Account Name: ASD
Account Domain: Contoso
Attributes:
SAM Account Name: ASD
Display Name: wSDSAD D. DSA
User Principal Name: ASD@Contoso.com
Home Directory: -
Home Drive: -
Script Path: -
Profile Path: -
User Workstations: -
Password Last Set: <never>
Account Expires: <never>
Primary Group ID: 513
Allowed To Delegate To: -
Old UAC Value: 0x0
New UAC Value: 0x15
User Account Control:
Account Disabled
'Password Not Required' - Enabled
'Normal Account' - Enabled
User Parameters: -
SID History: -
Logon Hours: <value not set>
Additional Information:
Privileges -
Например, в этом событии я хочу иметь
1. Имя пользователя и домен создателя
2. Название созданной учетной записи
3. Домен созданного аккаунта
4. Электронная почта созданного аккаунта
5. Может быть, HomeDrive
6. Элементы управления учетной записью пользователя
Я мог бы сделать это с помощью следующего кода:
@{label='Username';expression={$_.properties[x].value}},
Но это было бы статично, и мне нужно создавать для каждого события новую функцию.