AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 14098
Accepted
Matthew
Matthew
Asked: 2009-05-29 12:38:38 +0800 CST2009-05-29 12:38:38 +0800 CST 2009-05-29 12:38:38 +0800 CST

删除旧的 Windows 打印作业

  • 772

在我们的主要 Windows 2003 打印服务器上,我们共享大约 500 台打印机。我们通常有大约 50 个卡住的打印作业。尽管离世界末日还很远,但它让我很烦,我往往最终每周花费 30 多分钟来寻找和删除卡住的工作。

我真正想要的是一个脚本,用于删除所有打印机上超过 24 小时的所有打印作业。

来自 UNIX 背景,我发现 Windows 脚本非常令人困惑。任何关于我如何开始这项任务的建议都将不胜感激。任何完整的解决方案都会令人惊叹。;)

干杯,

垫。

windows scripting printer
  • 4 4 个回答
  • 10826 Views

4 个回答

  • Voted
  1. Best Answer
    Kevin Colby
    2009-05-29T12:49:13+08:002009-05-29T12:49:13+08:00

    这在 Powershell 中应该相当简单。您会发现来自 *nix 的 powershell 更符合您的喜好。但是,您将使用 WMI,这确实是一种祝福和诅咒。

    一些示例代码可以满足您的需求(未测试):

    $strComputer = "."
    
    $PrintJobs = get-wmiobject -class "Win32_PrintJob" -namespace "root\CIMV2" -computername $strComputer | Where-Object { $_.StartTime -lt $($(Get-Date).addDays(-1)) }
    
    foreach ($job in $PrintJobs) {
        Write-Host "Canceling job $($job.JobId)"
        $job.Delete
    }
    

    基本上,您只需要从 WMI 获取开始时间小于现在的所有对象 - 24 小时。

    • 6
  2. splattne
    2009-05-29T13:23:58+08:002009-05-29T13:23:58+08:00

    这可能是你的策略。停止后台处理程序服务,删除所有旧文件并重新启动服务。

    将此脚本代码写入文本文件并将其命名为“DeleteOldQueuedFile.vbs”:

    Dim Fso, Directory, Modified, Files
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set Directory = Fso.GetFolder("%systemroot%\system32\spool\printers")
    Set Files = Directory.Files
    
    For Each Modified in Files  
       If DateDiff("D", Modified.DateLastModified, Now) >= 1 Then Modified.Delete
    Next
    

    编写一个批处理文件,您可以将其安排为夜间作业:

    net stop spooler
    DeleteOldQueuedFile.vbs
    net start spooler
    
    • 2
  3. p858snake
    2009-05-29T18:04:19+08:002009-05-29T18:04:19+08:00

    如果您进入 Windows 2003 资源工具包,则有一个专门用于执行此操作的工具,称为 Cleanspl.exe。

    资源工具包:mircosoft url /downloads/details.aspx?FamilyID=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&displaylang=en

    或者你可以编写脚本:

    echo Printers - Shutting down the print spooler
    net stop "pcounter printer control"
    net stop "print spooler"
    echo Printers - Deleting print queues
    del c:\WINDOWS\system32\spool\PRINTERS\*.* /q
    
    net start "print spooler"
    net start "pcounter printer control"
    echo Printers - Print spooler Started
    
    • 1
  4. Syberdoor
    2021-05-01T00:27:39+08:002021-05-01T00:27:39+08:00

    不确定当时接受的答案是否有效,但在 Server 2012 R2 和 2016 上它不再有效。

    该属性现在是 TimeSubmitted,如果不从 WMI Timeobject 转换,则无法将其与 DateTime 进行比较。此外,由于重载,不能像在接受的答案中那样调用 Delete 方法。所以更新的版本将是:

    $printJobs = get-wmiobject -class "Win32_PrintJob" -namespace "root\CIMV2" | Where-Object {[System.Management.ManagementDateTimeConverter]::ToDateTime($_.TimeSubmitted) -lt (Get-Date).addDays(-1)}    
    foreach ($job in $printJobs) {
        $job.Delete()
    }
    
    • 0

相关问题

  • 您最喜欢的云计算提供商是什么?[关闭]

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve