设为首页 收藏本站
查看: 666|回复: 0

[经验分享] PowerShell 监控Windows打印服务器

[复制链接]

尚未签到

发表于 2018-6-16 15:14:43 | 显示全部楼层 |阅读模式
  场景:所有办公打印机安装在一台08r2 server上,客户端通过\\print-server的共享方式来连接使用打印机。想实现报表记录打印的用户,打印的文件名,使用的打印机名称(打印文件大小,打印的时间)

  操作:

  1、打开08r2Server上PrintService的记录功能,路径在Microsoft-Windows-PrintService下的Operational日志。

  推荐是移动到其他路径,因为一旦打开保不齐就磁盘空间不足这样……

DSC0000.png

DSC0001.png

  2、计划是将“打印文件名,打印用户名,打印时间,打印机名称,打印页数”这几项提取出来,输出成csv,方便统计和筛选。

  其他说明见脚本注释

  

    #获取日志,事件ID 307即我们需要提取的事件。 path后的路径要与operational日志属性里的日志路径一致  
$log = Get-WinEvent -Path "F:\pringlog\Microsoft-Windows-PrintService%4Operational.evtx" | where-object {$_.id -eq "307"}
  #输出csv文件位置,用当前的日期运行。
  
$Path="F:\pringlog\$(Get-date -UFormat "%Y-%m-%d").csv"
  
foreach ($slog in $log)
  
{
  #取xml操作
  $xmltemp= $slog.ToXml()
  $xmldata = [xml]$xmltemp
  #取xml对应的node里的值
  $documentsName = $xmldata.Event.UserData.DocumentPrinted.Param2
  $userName = $xmldata.Event.UserData.DocumentPrinted.Param3
  $paGes = $xmldata.Event.UserData.DocumentPrinted.Param8
  $printerName = $xmldata.Event.UserData.DocumentPrinted.Param5
  #取日志时间
  $printTime = $slog.TimeCreated
  #自定义PSObject属性
  $hash = @{
  [string]"打印文件名"=$documentsName;
  [string]"用户名"=$userName;
  [string]"打印时间"=$printTime.ToString();
  [string]"打印机名称"=$printerName;
  [string]"打印页数"=$paGes}
  $logObj = New-Object PSObject -Property $hash
  #输出为CSV,逐条添加模式,不带TypeInformation,所以如果要重新输出,还得删掉以前的文件。
  Export-Csv -InputObject $logObj -Path $Path -Append -Encoding UTF8 -NoTypeInformation
  
}
  

  

  3、脚本存为ps1格式,记得在跑脚本的服务器上跑一下

  

set-executionpolicy -executionpolicy RemoteSigned  

  以设置允许使用本地脚本。

  然后再用PowerShell执行脚本。会在指定的$Path目录生成一个以当天日期命名的csv文件。效果见下图:

  客户服务器上提的日志,象征性打码。

DSC0002.png

  

  4、扩展使用:

  自己使用需根据实际情况修改日志路径和生成的CSV路径

  增加取日志时间区间,以实现日报,周报,月报,季报,年报……各种时间区间报

  日志的XML是带用户的sid的,OU调整的好的话,可以获取部门名称

  日志的格式是固定的,可以不通过xml来取,用正则表达式会更快。

  省下了一笔装第三方打印服务器的钱……

  

  参考资料:

  太多了…写点关键点吧


  www.pstips.net
  PowerShell 追加 CSV 数据
  PowerShell 创建自定义对象
  New-Object PSObject –Property [HashTable]


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-524677-1-1.html 上篇帖子: 命令行模式下安装windows系统 下篇帖子: windows 网络规划
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表