ค้นหาเว็บไซต์

ใหม่-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 เพื่อรับเหตุการณ์จากบันทึกเหตุการณ์ได้

บทความที่เกี่ยวข้อง