4

我开始把这个 PowerShell 脚本放在一起,希望能替换一些目前手动执行的任务

我正在使用

get-Date.AddDays()

功能

我正在使用 ISE 构建脚本,并且在测试中,如果我挑出 'starttime' 属性,我会得到输出,但这似乎是一个问题,因为这些值都是空的,理想情况下我想使用'timesubmitted' 属性,但日期似乎输出奇怪,我认为没有正确读取,因为我的带有 'timesubmitted' 的查询总是空的

如果您进行开放式查询,它会以这种格式出现

20120416030836.778000-420

这是我到目前为止所拥有的。

无视| 'format-table' 函数,这样我就可以查看是否获得了所需的输出

#Clears Old Print Jobs on Specified server

#Sets Execution Policy for Script to run
Set-ExecutionPolicy RemoteSigned -Force

#establishes variable for cutoff date
$d = Get-Date
$old = $d.AddDays(-4)

#Queries WMI and retrieves print jobs
Get-WmiObject -class win32_printjob -namespace "root\CIMV2" | where-object {$_.timesubmitted -lt
"$old"} | ft caption,document,jobid,jobstatus,owner,timesubmitted
4

2 回答 2

9

在 PowerShell 中,每个 WMI 实例都有一个 ScriptMethod,可用于将日期从 WMI 格式转换为 .NET 格式:

Get-WmiObject Win32_PrintJob | 
Where-Object { $_.ConvertToDateTime($_.TimeSubmitted) -lt $old } |
Foreach-Object { $_.Delete() }
于 2012-04-16T14:58:57.833 回答
1

只是一个更新,以防有人在 2021 年寻找。

这个命令/语法在 2008 R2(PowerShell 版本 2.0)中为我工作(我能够从这个页面以及其他页面拼凑起来)。

查找超过 30 分钟的所有作业并将其删除:

Get-wmiobject win32_printjob 
| Where-Object {[System.Management.ManagementDateTimeConverter]::ToDateTime($_.TimeSubmitted) -lt (Get-Date).addminutes(-30)} 
| ForEach-Object { $_.delete() }*
于 2021-06-18T14:29:36.880 回答