使用PowerShell v1.0创建新的计划任务

时间:2013-07-18 12:07:41

标签: powershell scheduled-tasks

我正在尝试使用powershell v1.0创建一个简单的计划任务,当我查看MSDN上的任务计划程序对象http://msdn.microsoft.com/en-us/library/windows/desktop/aa383607%28v=vs.85%29.aspx时,我不确定我是否真的理解我在做什么。

到目前为止,在我的代码中,我有以下内容:

Function createFirefoxTask() {
   $schedule = new-object -com Schedule.Service 
   $schedule.connect() 
   $tasks = $schedule.getfolder("\").gettasks(0)

   $firefoxTaskExist=$false

   # Check if the firefox schedule task exists
   foreach ($task in ($tasks | select Name)) {
      if($task.name.equals("FirefoxMaint")) {
         $firefoxTaskExist=$true
         break
      }
   }

   # Create the scheduled task if it does not exist
   if($firefoxTaskExist -eq $false) { 
        write-output "Creating firefox task..."
        $firefoxTask=$schedule.NewTask(0)
        $firefoxTask | get-member
   }
} 

但是分配给$firefoxTask的成员似乎对我没有意义。例如,我如何做一些像命名我的新任务一样简单的事情?

这是我收到的输出......

   TypeName: System.__ComObject#{f5bc8fc5-536d-4f77-b852-fbc1356fdeb6}

Name             MemberType Definition                                        
----             ---------- ----------                                        
Actions          Property   IActionCollection Actions () {get} {set}          
Data             Property   string Data () {get} {set}                        
Principal        Property   IPrincipal Principal () {get} {set}               
RegistrationInfo Property   IRegistrationInfo RegistrationInfo () {get} {set} 
Settings         Property   ITaskSettings Settings () {get} {set}             
Triggers         Property   ITriggerCollection Triggers () {get} {set}        
XmlText          Property   string XmlText () {get} {set}   

如果我深入研究它们,上述成员似乎都没有理解我正在尝试做什么。

1 个答案:

答案 0 :(得分:1)

创建一个新任务我通常在一台服务器上手动创建它然后将其导出到.xml,使用以下代码可以将其导入另一台服务器上(我还没有验证这是在V1.0中工作)< / p>

    $sch = New-Object -ComObject("Schedule.Service")
    $computername | foreach{
        $sch.connect($_)
        $root=$sch.GetFolder("\")
        $root.CreateFolder("SMAC")
        $folder =$sch.GetFolder("\SMAC") 

        Get-childItem -path $task_path -Filter *.xml | %{
            $task_name = $_.Name.Replace('.xml', '') #create a task base on the name of the xml file
            $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)
        }