求可审计指定打印机的PrintService ID 307审计脚本
筛选特定打印机的PrintService审计脚本
要仅审计指定的打印机,你只需在原脚本的筛选条件中添加打印机名称匹配规则即可。事件ID 307对应文档成功打印的记录,其中包含打印机名称信息,我们可以通过事件的Properties属性定位到该字段并筛选。
步骤1:确认打印机名称在事件中的属性索引
先执行以下命令查看单条307事件的属性详情,确认哪个索引对应打印机名称:
Get-WinEvent -ProviderName "Microsoft-Windows-PrintService" -FilterHashtable @{Id=307} | Select-Object -First 1 -ExpandProperty Properties
输出会显示多个Property对象,其中Value为打印机名称的那一项的索引(从0开始)就是我们需要的,通常为3(不同系统可能略有差异)。
步骤2:修改脚本添加筛选条件
场景1:精确匹配多个指定打印机
定义目标打印机列表,仅保留匹配这些打印机的事件:
# 替换为你需要审计的打印机名称 $targetPrinters = @("HP LaserJet Pro MFP M426dw", "Canon iR-ADV C5535i") Get-WinEvent -ProviderName "Microsoft-Windows-PrintService" | Where-Object { $_.Id -eq 307 -and $_.Properties[3].Value -in $targetPrinters } | Format-List > C:\relatorio.txt
场景2:模糊匹配(包含指定关键词的打印机)
如果需要匹配名称包含特定关键词的打印机(比如所有HP品牌打印机),使用-like运算符:
Get-WinEvent -ProviderName "Microsoft-Windows-PrintService" | Where-Object { $_.Id -eq 307 -and $_.Properties[3].Value -like "*HP*" } | Format-List > C:\relatorio.txt
说明
- 若步骤1中发现打印机名称对应的属性索引不是
3,只需将脚本中的Properties[3]替换为实际索引即可。 -in用于精确匹配多个值,-like配合通配符*用于模糊匹配,可根据需求选择。
内容的提问来源于stack exchange,提问作者Fabio Brigoni
相关产品推荐
相关产品推荐

