Сценарий PowerShell для запроса и удаления заданий печати старше x дней

Я начал собирать этот PowerShell Script, надеясь заменить некоторые задачи, которые в настоящее время выполняются вручную.

я использую

get-Date.AddDays()

функция

Я использую ISE для создания скрипта, и при тестировании я получаю вывод, если выделю свойство «время начала», но это, кажется, все, потому что все значения имеют значение null, в идеале я хотел бы использовать 'timesubmitted', но дата, кажется, выводится нечетно, и я не думаю, что она читается правильно, потому что мои запросы с 'timesubmitted' всегда пусты

выходит в таком формате, если сделать открытый запрос

20120416030836.778000-420

вот что у меня есть до сих пор.

игнорировать | функция «формат таблицы», чтобы я мог видеть, получаю ли я желаемый результат

#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

person Matt Hamende    schedule 16.04.2012    source источник


Ответы (2)


В PowerShell каждый экземпляр WMI имеет метод ScriptMethod, который можно использовать для преобразования дат из формата WMI в формат .NET:

Get-WmiObject Win32_PrintJob | 
Where-Object { $_.ConvertToDateTime($_.TimeSubmitted) -lt $old } |
Foreach-Object { $_.Delete() }
person Shay Levy    schedule 16.04.2012

Просто обновление на случай, если кто-то ищет в 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() }*
person Israel Pineda    schedule 18.06.2021
comment
Может быть полезно также добавить, почему принятый ответ больше не действителен. Выдает ошибку? Полагаться на устаревшие API? - person Jeremy Caney; 01.07.2021