Mat*_*hew 1 scripting windows printer
在我们的主要 Windows 2003 打印服务器上,我们共享大约 500 台打印机。我们通常有大约 50 个卡住的打印作业。虽然离世界末日还很远,但它让我很烦,我往往会每周花 30 多分钟来寻找和删除卡住的工作。
我真正想要的是删除所有打印机上超过 24 小时的所有打印作业的脚本。
来自 UNIX 背景,我发现 Windows 脚本编写非常混乱。任何关于我如何开始这项任务的建议将不胜感激。任何完整的解决方案都会令人惊叹。;)
干杯,
垫。
这在 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
}
Run Code Online (Sandbox Code Playgroud)
基本上,您只需要从 WMI 获取开始时间小于现在 - 24 小时的所有对象。