Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

เรียกใช้สคริปต์ (โปรแกรม) เมื่อโปรแกรมเฉพาะเปิด/ปิดใน Windows

ในบทความนี้ เราจะแสดงวิธีการติดตามเหตุการณ์ของการเปิดตัวโปรแกรม (กระบวนการ) บางโปรแกรมใน Windows และดำเนินการ (เรียกใช้สคริปต์ คำสั่ง โปรแกรม ส่งอีเมล ฯลฯ) ตัวอย่างเช่น เราจะติดตามการเปิดตัวกระบวนการ notepad.exe และเมื่อผู้ใช้เปิดแผ่นจดบันทึก Windows จะเรียกใช้สคริปต์ PowerShell เฉพาะโดยอัตโนมัติ

ก่อนอื่น กำหนดค่านโยบายการตรวจสอบกระบวนการใน Windows คุณสามารถกำหนดค่านโยบายการตรวจสอบบนคอมพิวเตอร์แบบสแตนด์อโลนได้โดยใช้ Local Group Policy Editor (gpedit.msc ). หากคุณต้องการกำหนดค่านโยบายบนคอมพิวเตอร์และเซิร์ฟเวอร์ในโดเมน AD ของคุณ ให้ใช้คอนโซลการจัดการนโยบายกลุ่ม (gpmc.msc )

  1. ไปที่ การกำหนดค่าคอมพิวเตอร์ -> การตั้งค่า Windows -> การตั้งค่าความปลอดภัย -> นโยบายท้องถิ่น -> นโยบายการตรวจสอบ;
  2. เปิด ติดตามกระบวนการตรวจสอบ คุณสมบัติและเปิดใช้งานเพื่อความสำเร็จ เหตุการณ์ เรียกใช้สคริปต์ (โปรแกรม) เมื่อโปรแกรมเฉพาะเปิด/ปิดใน Windows
  3. ใช้การตั้งค่า Group Policy โดยเรียกใช้:gpupdate /force

ตอนนี้ เมื่อเริ่มต้นกระบวนการใดๆ ใน Windows กิจกรรมที่มี EventID 4688 (สร้างกระบวนการใหม่แล้ว ) จะปรากฏใน Event Viewer -> Windows Logs -> Security เหตุการณ์แสดงให้เห็นว่าใครเป็นผู้ดำเนินการ (ชื่อบัญชี ) ชื่อของกระบวนการ (ชื่อกระบวนการใหม่ ) และชื่อของกระบวนการหลัก (ชื่อกระบวนการของผู้สร้าง )

เรียกใช้สคริปต์ (โปรแกรม) เมื่อโปรแกรมเฉพาะเปิด/ปิดใน Windows

คุณสามารถเลือกเหตุการณ์การเปิดแอปจากบันทึกเหตุการณ์ตามกระบวนการเฉพาะโดยใช้ PowerShell:

รับ-WinEvent -FilterHashtable @{
LogName ='Security'
ID =4688
} | เลือกวัตถุ TimeCreated,@{name='NewProcessName';expression={ $_.Properties[5].Value }}, @{name='User';expression={ $_.Properties[1].Value }} |where-object {$_.NewProcessName –like “*notepad.exe*”}

เป็นผลให้เราได้รับประวัติการเปิดตัวโปรแกรมโดยผู้ใช้บนคอมพิวเตอร์เครื่องนี้

เรียกใช้สคริปต์ (โปรแกรม) เมื่อโปรแกรมเฉพาะเปิด/ปิดใน Windows

จากนั้นสร้างงานใหม่ใน Task Scheduler ที่จะรันหากเหตุการณ์ที่มี EventID 4688 ปรากฏขึ้น

  1. เปิดตัวกำหนดการงาน (taskscd.msc ) และสร้างงานใหม่ -> สร้างงาน;
  2. ระบุชื่องานและระบุว่าจะต้องเรียกใช้สำหรับผู้ใช้ทั้งหมด (เมื่อเรียกใช้งาน ให้ใช้บัญชีผู้ใช้ต่อไปนี้ -> BUILTIN\Users ). หากคุณสร้างงานโดยใช้ GPO ให้ใช้รูปแบบนี้:%LogonDomain%\%LogonUser%;
  3. ใน การกระทำ แท็บ ตั้งค่าการดำเนินการที่คุณต้องการดำเนินการ ในตัวอย่างนี้ ฉันจะเรียกใช้สคริปต์ PowerShell (เรียก powershell.exe ด้วยแอตทริบิวต์:-ExecutionPolicy Bypass -file "C:\PS\ProcessRunEvent.ps1 ); เรียกใช้สคริปต์ (โปรแกรม) เมื่อโปรแกรมเฉพาะเปิด/ปิดใน Windows
  4. จากนั้นผูกงานกับเหตุการณ์ของ Windows ไปที่ ทริกเกอร์ แท็บ เลือก ใหม่ -> ในกิจกรรม -> กำหนดเอง -> ตัวกรองเหตุการณ์ใหม่;
  5. ในหน้าต่างถัดไป ให้ระบุตัวเลือกตัวกรองเหตุการณ์ต่อไปนี้:
    บันทึกเหตุการณ์:ความปลอดภัย
    รหัสกิจกรรม:4688
    คำสำคัญ:ตรวจสอบสำเร็จ
    เรียกใช้สคริปต์ (โปรแกรม) เมื่อโปรแกรมเฉพาะเปิด/ปิดใน Windows
  6. จากนั้นไปที่ XML แท็บและเปิดใช้งาน แก้ไขการสืบค้นด้วยตนเอง ตัวเลือก. แก้ไขแบบสอบถามโดยเพิ่มบรรทัดต่อไปนี้ในตัวกรอง:and *[EventData[Data[@Name='NewProcessName'] and (Data='C:\Windows\System32\notepad.exe')]]
  7. คุณจะได้รับแบบสอบถาม XML ต่อไปนี้:
    <QueryList>
    <Query Id="0" Path="Security">
    <Select Path="Security">
    *[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and Task = 13312 and (band(Keywords,9007199254740992)) and (EventID=4688)]]
    and
    *[EventData[Data[@Name='NewProcessName'] and (Data='C:\Windows\System32\notepad.exe')]]
    </Select>
    </Query>
    </QueryList>
    

    เรียกใช้สคริปต์ (โปรแกรม) เมื่อโปรแกรมเฉพาะเปิด/ปิดใน Windows

  8. บันทึกงาน

ลองเรียกใช้ notepad.exe ทุกครั้งที่ผู้ใช้เปิด Notepad สคริปต์ PowerShell ของคุณจะทำงานโดยอัตโนมัติ

ตัวอย่างเช่น คุณสามารถแสดงการแจ้งเตือนแบบผุดขึ้นหรือส่งอีเมลโดยใช้ PowerShell

เรียกใช้สคริปต์ (โปรแกรม) เมื่อโปรแกรมเฉพาะเปิด/ปิดใน Windows

หลังจากปิดแอปเฉพาะแล้ว บางครั้งคุณอาจต้องการเรียกใช้สคริปต์สำรอง เป็นต้น หากคุณต้องการติดตามการออกจากโปรแกรม ให้ใช้เหตุการณ์ที่มีรหัสเหตุการณ์ 4689ออกจากกระบวนการ .

ก่อนหน้านี้ เราได้แสดงสคริปต์ PowerShell เพื่อเริ่มกระบวนการใหม่โดยอัตโนมัติหากหยุดทำงาน โซลูชันที่ติดตามเหตุการณ์ run/stop ของกระบวนการมีความสง่างามมากกว่า และไม่ต้องใช้สคริปต์ PowerShell เพื่อตรวจสอบกระบวนการ Windows ที่ทำงานอยู่