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 に答える