ใหม่-WinEvent (Microsoft.PowerShell.Diagnostics)
New-WinEvent
- โมดูล :
- Microsoft.PowerShell.Diagnostics
สร้างเหตุการณ์ Windows ใหม่สำหรับผู้ให้บริการเหตุการณ์ที่ระบุ
ไวยากรณ์
New-WinEvent
[-ProviderName] <String>
[-Id] <Int32>
[-Version <Byte>]
[[-Payload] <Object[]>]
[<CommonParameters>]คำอธิบาย
cmdlet นี้ใช้ได้เฉพาะบนแพลตฟอร์ม Windows เท่านั้น
cmdlet New-WinEvent สร้างเหตุการณ์การติดตามเหตุการณ์สำหรับ Windows (ETW) สำหรับผู้ให้บริการเหตุการณ์ คุณสามารถใช้ cmdlet นี้เพื่อเพิ่มเหตุการณ์ลงในช่อง ETW จาก PowerShell
ตัวอย่าง
ตัวอย่างที่ 1 - สร้างกิจกรรมใหม่
New-WinEvent -ProviderName Microsoft-Windows-PowerShell -Id 45090 -Payload @("Workflow", "Running")คำสั่งนี้ใช้ cmdlet New-WinEvent เพื่อสร้างเหตุการณ์ 45090 สำหรับผู้ให้บริการ Microsoft-Windows-PowerShell
ตัวอย่างที่ 2 - รับเทมเพลตสำหรับกิจกรรม
ในตัวอย่างนี้ Get-WinEvent ถูกใช้เพื่อรับเทมเพลตสำหรับรหัสเหตุการณ์ 8007 จากผู้ให้บริการเหตุการณ์ Group Policy โปรดสังเกตว่าเหตุการณ์มีสองรูปแบบ
ในเวอร์ชัน 0 ช่อง IsMachine จะเป็นค่าบูลีน ในเวอร์ชัน 1 ช่อง IsMachine เป็นค่าจำนวนเต็มที่ไม่ได้ลงนาม
(Get-WinEvent -ListProvider Microsoft-Windows-GroupPolicy).Events | Where-Object Id -eq 8007
Id : 8007
Version : 0
LogLink : System.Diagnostics.Eventing.Reader.EventLogLink
Level : System.Diagnostics.Eventing.Reader.EventLevel
Opcode : System.Diagnostics.Eventing.Reader.EventOpcode
Task : System.Diagnostics.Eventing.Reader.EventTask
Keywords : {}
Template : <template xmlns="http://schemas.microsoft.com/win/2004/08/events">
<data name="PolicyElaspedTimeInSeconds" inType="win:UInt32" outType="xs:unsignedInt"/>
<data name="ErrorCode" inType="win:UInt32" outType="win:HexInt32"/>
<data name="PrincipalSamName" inType="win:UnicodeString" outType="xs:string"/>
<data name="IsMachine" inType="win:Boolean" outType="xs:boolean"/>
<data name="IsConnectivityFailure" inType="win:Boolean" outType="xs:boolean"/>
</template>
Description : Completed periodic policy processing for user %3 in %1 seconds.
Id : 8007
Version : 1
LogLink : System.Diagnostics.Eventing.Reader.EventLogLink
Level : System.Diagnostics.Eventing.Reader.EventLevel
Opcode : System.Diagnostics.Eventing.Reader.EventOpcode
Task : System.Diagnostics.Eventing.Reader.EventTask
Keywords : {}
Template : <template xmlns="http://schemas.microsoft.com/win/2004/08/events">
<data name="PolicyElaspedTimeInSeconds" inType="win:UInt32" outType="xs:unsignedInt"/>
<data name="ErrorCode" inType="win:UInt32" outType="win:HexInt32"/>
<data name="PrincipalSamName" inType="win:UnicodeString" outType="xs:string"/>
<data name="IsMachine" inType="win:UInt32" outType="xs:unsignedInt"/>
<data name="IsConnectivityFailure" inType="win:Boolean" outType="xs:boolean"/>
</template>
Description : Completed periodic policy processing for user %3 in %1 seconds.คุณสมบัติ คำอธิบาย มีข้อความที่ถูกเขียนลงในบันทึกเหตุการณ์ ค่า %3 และ %1 เป็นตัวยึดตำแหน่งสำหรับค่าที่ส่งไปยังเทมเพลต สตริง %3 จะถูกแทนที่ด้วยค่าที่ส่งไปยังฟิลด์ PrincipalSamName สตริง %1 ถูกแทนที่ด้วยค่าที่ส่งไปยังฟิลด์ PolicyElaspedTimeInSeconds
ตัวอย่างที่ 3 - สร้างเหตุการณ์ใหม่โดยใช้เทมเพลตเวอร์ชัน
ตัวอย่างนี้แสดงวิธีสร้างกิจกรรมโดยใช้เวอร์ชันเทมเพลตเฉพาะ
$Payload = @(300, [uint32]'0x8001011f', $env:USERNAME, 0, 1)
New-WinEvent -ProviderName Microsoft-Windows-GroupPolicy -Id 8007 -Version 1 -Payload $Payload
Get-winEvent -ProviderName Microsoft-Windows-GroupPolicy -MaxEvents 1
ProviderName: Microsoft-Windows-GroupPolicy
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
5/4/2022 8:40:24 AM 8007 Information Completed periodic policy processing for user User1 in 300 secondsหากค่าในเพย์โหลดไม่ตรงกับประเภทในเทมเพลต เหตุการณ์จะถูกบันทึก แต่เพย์โหลดมีข้อผิดพลาด
พารามิเตอร์
-Id
ระบุรหัสเหตุการณ์ที่ลงทะเบียนในผู้ให้บริการเหตุการณ์
- พิมพ์ :
Int32
- ตำแหน่ง:
1
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
-
False
-Payload
เพย์โหลดคืออาร์เรย์ของค่าที่ส่งเป็นอาร์กิวเมนต์ตำแหน่งไปยังเทมเพลตเหตุการณ์ ค่าต่างๆ จะถูกแทรกลงในเทมเพลตเพื่อสร้างข้อความสำหรับกิจกรรม กิจกรรมสามารถมีเทมเพลตได้หลายเวอร์ชันที่ใช้รูปแบบที่แตกต่างกัน
หากค่าในเพย์โหลดไม่ตรงกับประเภทในเทมเพลต เหตุการณ์จะถูกบันทึก แต่เพย์โหลดมีข้อผิดพลาด
- พิมพ์ :
Object[]
- ตำแหน่ง:
2
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-ProviderName
ระบุผู้ให้บริการเหตุการณ์ที่เขียนเหตุการณ์ลงในบันทึกเหตุการณ์ เช่น "Microsoft-Windows-PowerShell" ผู้ให้บริการเหตุการณ์ ETW เป็นเอนทิตีเชิงตรรกะที่เขียนเหตุการณ์ไปยังเซสชัน ETW
- พิมพ์ :
-
String
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Version
ระบุหมายเลขเวอร์ชันของเหตุการณ์ PowerShell แปลงตัวเลขให้เป็นประเภทไบต์ที่ต้องการ ค่าจะระบุเวอร์ชันของเหตุการณ์เมื่อมีการกำหนดเวอร์ชันที่แตกต่างกันของเหตุการณ์เดียวกัน
- พิมพ์ :
ไบต์
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
อินพุต
ไม่มี
คุณไม่สามารถไปป์วัตถุกับ cmdlet นี้
เอาท์พุต
ไม่มี
cmdlet นี้ส่งคืนไม่มีผลลัพธ์
หมายเหตุ
หลังจากที่ผู้ให้บริการเขียนเหตุการณ์ลงในบันทึกเหตุการณ์ คุณสามารถใช้ cmdlet Get-WinEvent เพื่อรับเหตุการณ์จากบันทึกเหตุการณ์ได้