如何从 powershell 获取与任务计划程序中的任务关联的触发器详细信息

Tyl*_*den 6 powershell scheduler scheduled-tasks robocopy

因此,基本上我需要获取与任务计划程序中创建的任务关联的触发器详细信息。 在此输入图像描述

所以,基本上我想要在这个触发窗口中设置这些信息,例如每日或每周和重复任务持续时间以及持续时间等。

现在我能够得到以下信息。

Name            : LastTaskResult
Value           : 0
CimType         : UInt32
Flags           : Property, ReadOnly, NotModified
IsValueModified : False

Name            : NextRunTime
Value           : 23-09-2015 11:26:56
CimType         : DateTime
Flags           : Property, ReadOnly, NotModified
IsValueModified : False

Name            : NumberOfMissedRuns
Value           : 0
CimType         : UInt32
Flags           : Property, ReadOnly, NotModified
IsValueModified : False

Name            : TaskName
Value           : test_Task
CimType         : String
Flags           : Property, Key, NotModified
IsValueModified : False

Name            : TaskPath
Value           : 
CimType         : String
Flags           : Property, Key, NotModified, NullValue
IsValueModified : False
Run Code Online (Sandbox Code Playgroud)

所以,基本上我的要求是我有两台服务器。一台是主设备,另一台是备份设备。我已经在主服务器中安排了任务,并定期将这些任务镜像(robocopy)到备份服务器,这工作得非常好。

但是,当我更改“操作”选项卡中的触发器详细信息或参数时,它不会出现在备份服务器中,因为我只是检查任务名称是否已存在于备份服务器中,如果没有,则创建这些任务。

那么有什么方法可以检查有关触发器(每日或每周等,重复详细信息)或操作(脚本和参数详细信息)的详细信息,以便我可以在辅助服务器中相应地更新任务。

Loï*_*HEL 0

我认为您“基本上”需要的是任务的导出/导入功能。
这是示例代码:

#connect to scheduler of you master server
$sch = New-Object -ComObject("Schedule.Service")
$sch.connect("$computername")

$root=$sch.GetFolder("\") 
$folder =$sch.GetFolder("\subfolder") #if you tasks are defined in a subfolder

#Export all tasks in the subfoder to $path folder in xml format
$folder.getTasks(0) | % {
    $path="c:\temp\tasks\$($_.name).xml" 
    New-Item -ItemType file -Path $path
    Set-Content -Path $path -Value $_.xml
}


#connect to scheduler of you backup server
$sch.connect("$backupcomputername")
$folder =$sch.GetFolder("\subfolder")

#import .xml from $task_path
$cred=get-credential # will ask for the credential of the user who run the tasks
Get-childItem -path $task_path -Filter *.xml | %{
    $task_name = $_.Name.Replace('.xml', '')
    $task_xml = Get-Content $_.FullName
    $task = $sch.NewTask($null)
    $task.XmlText = $task_xml
    $folder.RegisterTaskDefinition($task_name, $task, 6, $cred.UserName, $cred.GetNetworkCredential().password, 1, $null)
}
Run Code Online (Sandbox Code Playgroud)