4

このPowerShellスクリプトをまとめ始めました。現在、手動で実行されているいくつかのタスクを置き換えることを望んでいます。

私は使用しています

get-Date.AddDays()

働き

私はISEを使用してスクリプトを作成しており、テストでは「starttime」プロパティを選択すると出力が得られますが、値がすべてnullになるため、これはすべてをキャッチしているようです。理想的には、 「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 に答える