0

我正在尝试使用 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}   

如果我进一步深入研究,上述成员似乎对我正在尝试做的事情没有意义。

4

1 回答 1

1

要创建一个新任务,我通常在一台服务器上手动创建它,然后将其导出到 .xml,您可以使用以下代码将其导入另一台服务器(虽然我尚未验证这在 V1.0 中是否有效)

    $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)
        }
于 2013-07-18T12:18:01.030 回答