ローカルコンピュータのTask Scheduler
からの情報をPowerShell
スクリプトで印刷しようとしています。これにより、他のユーザーもこの情報を印刷でき、Task Scheduler
にアクセスする必要がなくなります。印刷するにはスクリプトが必要です
名前、次回の実行時間、および最後の実行時間に関する情報を出力できますが、スクリプトを実行しても残りは出力されません。
私は既にスクリプトを少し始めて、フィールドをダウンさせています。
$schedule = new-object -com("Schedule.Service")
$schedule.connect()
$tasks = $schedule.getfolder("\").gettasks(0)
$tasks | select Name,Status,Triggers,NextRunTime,LastRunTime,LastRunResult,Author,Created | ft
foreach ($t in $tasks)
{
foreach ($a in $t.Actions)
{
$a.Path
}
}
任意の助けや提案をいただければ幸いです。
以下は私が探しているものとデータを印刷していないフィールドのスクリーンショットです:
これは少しクリーンアップできます(つまり、LastRunResultコードのマッピング)。サポートが必要な場合はお知らせください。 GUIでタスクを表示したときに表示される単純な英語の表現がCOMオブジェクトに存在するとは思わないので、トリガーは少し難しいです。 RegisteredTask.Definition.Triggers
に保存されているTriggerCollection
から構築する必要があると思います
$sched = New-Object -Com "Schedule.Service"
$sched.Connect()
$out = @()
$sched.GetFolder("\").GetTasks(0) | % {
$xml = [xml]$_.xml
$out += New-Object psobject -Property @{
"Name" = $_.Name
"Status" = switch($_.State) {0 {"Unknown"} 1 {"Disabled"} 2 {"Queued"} 3 {"Ready"} 4 {"Running"}}
"NextRunTime" = $_.NextRunTime
"LastRunTime" = $_.LastRunTime
"LastRunResult" = $_.LastTaskResult
"Author" = $xml.Task.Principals.Principal.UserId
"Created" = $xml.Task.RegistrationInfo.Date
}
}
$out | fl Name,Status,NextRuNTime,LastRunTime,LastRunResult,Author,Created
Server 2012 R2とWindows 8.1にはタスクスケジューラコマンドレットがあり、このモジュールをコピーしてWindows 7マシンで使用できます。おそらく最新の.NETとWindows管理フレームワークも必要になると考えられます。スケジュールされたタスクを無効にして再度有効にしたり、タスク情報を表示したりできます。現在、この情報を提供したり、このコントロールを許可したりする組み込みのコマンドレットについては知りません。
マシンでスケジュールされているすべてのタスクを一覧表示するには:
Get-ScheduledTask
タスクシーケンスオブジェクトから次のメンバーを取得できます。
PS C:\BigHomie> $A = Get-ScheduledTask | select -First 1
PS C:\BigHomie> $A
TypeName: Microsoft.Management.Infrastructure.CimInstance#Root/Microsoft/Windows/TaskScheduler/MSFT_ScheduledTask
Name MemberType Definition
---- ---------- ----------
Clone Method System.Object ICloneable.Clone()
Dispose Method void Dispose(), void IDisposable.Dispose()
Equals Method bool Equals(System.Object obj)
GetCimSessionComputerName Method string GetCimSessionComputerName()
GetCimSessionInstanceId Method guid GetCimSessionInstanceId()
GetHashCode Method int GetHashCode()
GetObjectData Method void GetObjectData(System.Runtime.Serialization.SerializationInfo info, Sys...
GetType Method type GetType()
ToString Method string ToString()
Actions Property CimInstance#InstanceArray Actions {get;set;}
Author Property string Author {get;set;}
Date Property string Date {get;set;}
Description Property string Description {get;set;}
Documentation Property string Documentation {get;set;}
Principal Property CimInstance#Instance Principal {get;set;}
PSComputerName Property string PSComputerName {get;}
SecurityDescriptor Property string SecurityDescriptor {get;set;}
Settings Property CimInstance#Instance Settings {get;set;}
Source Property string Source {get;set;}
TaskName Property string TaskName {get;}
TaskPath Property string TaskPath {get;}
Triggers Property CimInstance#InstanceArray Triggers {get;set;}
URI Property string URI {get;}
Version Property string Version {get;set;}
State ScriptProperty System.Object State {get=[Microsoft.PowerShell.Cmdletization.GeneratedTypes...
PS C:\BigHomie> $A.Triggers
Enabled : True
EndBoundary :
ExecutionTimeLimit :
Id :
Repetition : MSFT_TaskRepetitionPattern
StartBoundary :
PSComputerName :