PowerShell脚本用于查询和删除早于"x"天的打印作业

Mat*_*nde 4 powershell powershell-ise

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

我正在使用

get-Date.AddDays()
Run Code Online (Sandbox Code Playgroud)

功能

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

如果你做一个打开的查询,它会以这种格式出现

20120416030836.778000-420
Run Code Online (Sandbox Code Playgroud)

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

无视| '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
Run Code Online (Sandbox Code Playgroud)

Sha*_*evy 8

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

Get-WmiObject Win32_PrintJob | 
Where-Object { $_.ConvertToDateTime($_.TimeSubmitted) -lt $old } |
Foreach-Object { $_.Delete() }
Run Code Online (Sandbox Code Playgroud)