You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11下打印池为空时自动关闭打印池主机的实现方案咨询

Windows 11下打印池为空时自动关闭打印池主机的实现方案咨询

我完全理解你的需求——要让打印池主机在所有待打印任务都处理完毕、队列彻底清空时自动关机,而不是单个任务结束就触发操作。针对Windows 11环境,这里有两种实用的实现思路,帮你解决问题:

方案一:PowerShell脚本定时监控打印队列状态

这种方式直接可靠,通过定时检查打印队列的任务数来判断是否需要关机:

  1. 编写监控脚本
    创建一个PowerShell脚本文件(比如命名为PrintQueueShutdown.ps1),内容如下,记得替换$queueName为你的打印池队列实际名称(可以在「设置-蓝牙和设备-打印机和扫描仪」中找到):

    # 替换为你的打印池队列名称
    $queueName = "打印池队列名称"
    # 获取目标打印队列的当前状态
    $printQueue = Get-Printer -Name $queueName | Get-PrintQueue
    
    # 第一次检查队列是否为空
    if ($printQueue.NumberOfJobs -eq 0) {
        # 延迟10秒再次确认(避免任务刚完成的瞬时状态,防止误判)
        Start-Sleep -Seconds 10
        $printQueue = Get-Printer -Name $queueName | Get-PrintQueue
        
        # 二次确认队列确实为空,执行关机
        if ($printQueue.NumberOfJobs -eq 0) {
            Stop-Computer -Force
        }
    }
    

    如果你的打印池有多个队列,可以扩展脚本遍历所有队列,确保每个队列的任务数都为0再关机。

  2. 通过任务计划程序定时执行脚本

    • 打开「任务计划程序」,点击「创建任务」(权限设置更灵活)。
    • 触发器:选择「按预定计划」,设置执行间隔(比如每5分钟一次,根据你的打印频率调整);也可以选择「当打印事件发生时」作为触发条件,配合脚本检查。
    • 操作:选择「启动程序」,程序/脚本填powershell.exe,添加参数填-ExecutionPolicy Bypass -File "C:\你的脚本路径\PrintQueueShutdown.ps1"(替换为实际脚本路径)。
    • 权限:在「常规」标签页勾选「不管用户是否登录都要运行」,并点击「更改用户或组」选择SYSTEM账户,确保脚本有执行关机的权限。

方案二:结合事件查看器与任务计划程序,优化事件触发逻辑

你之前提到的单个任务完成日志可以作为触发点,但需要加上队列检查的逻辑,避免单个任务完成就关机:

  1. 配置任务触发器

    • 打开事件查看器,定位到应用程序和服务日志 > Microsoft > Windows > PrintService > Operational,找到事件ID为307的「任务已完成打印」事件。
    • 右键该事件,选择「将任务附加到此事件」,打开任务计划程序的创建界面。
  2. 修改任务操作

    • 不要直接设置关机操作,而是选择「启动程序」,调用上面编写的PowerShell脚本(参数和路径设置同方案一)。
    • 这样每次有打印任务完成时,都会触发脚本检查队列状态,只有当所有任务都处理完毕、队列为空时,才会执行关机。

注意事项

  • 测试阶段可以把脚本中的Stop-Computer -Force换成Write-Host "队列已空,将执行关机",确认逻辑正确后再替换回关机命令。
  • 如果遇到PowerShell脚本执行权限问题,确保使用-ExecutionPolicy Bypass参数,或者临时调整执行策略(执行Set-ExecutionPolicy RemoteSigned,按提示确认)。

备注:内容来源于stack exchange,提问作者Yang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 09:10:28