0

我試圖做到: 創建計劃任務每​​10分鐘運行一次。 如果服務器重新啓動,請繼續安排。如何在PowerShell v3中使用ComObject Schedule.service創建計劃任務?

我把它使用PowerShell V4的工作:

$account = $cred.Username 
$password = $cred.GetNetworkCredential().password 
$taskname = 'GCCOPS Asset Agent' 
$description = "gccops agent" 
$action = New-ScheduledTaskAction -Execute "Powershell" -Argument '-file  "C:\GCCAgent\Agent.ps1"' 
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).Date -RepetitionInterval (New-TimeSpan -Minutes 10) -RepetitionDuration (New-TimeSpan -Days 9999) 
$settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -ExecutionTimeLimit (New-TimeSpan -Minutes 5) 
$Result = Register-ScheduledTask -TaskName $taskName -Trigger $trigger -Action $action -Setting $settings -description $description -User $account -RunLevel 1 -Password $password -Force 

但是大多數我們的服務器沒有PowerShell中的V4,所以我怎麼能做到這一點與v3和舊的? 我發現一些代碼,但似乎無法弄清楚如何得到這個恰到好處的選項。這似乎創建了一個只運行一次的任務。我如何使它重複運行?

#create task 
function xmltime ([datetime] $d){ $d.Touniversaltime().tostring("u") -replace " ","T"} 
[string]$delay = '1' 
[string]$delay2 = '5' 
$ts = New-Object -ComObject Schedule.service 
$ts.connect() 
$nt = $ts.newtask(0) 
$ri = $nt.registrationinfo 
$ri.description = $taskname 
$ri.author = "$env:username" 
$prince = $nt.principal 
$prince.logontype = 6 
$trigger = $nt.triggers.create(1) 
$trigger.startboundary = xmltime ((get-date).addminutes($delay)) 
$trigger.Endboundary = xmltime ((Get-date).addminutes($delay2)) 
$trigger.ExecutionTimelimit = "PT5M" 
$trigger.enabled = $true 
$trigger.id = "Trigger $taskname" 
$action = $nt.actions.create(0) 
$action.path = @(Get-Command powershell.exe)[0].Definition 
$action.arguments = C:\GCCAgent\Agent.ps1" 
$tsfolder = $ts.getfolder("\") 
$tsfolder.RegisterTaskDefinition("$taskname", $nt, 6,$account, $password, 6) | out-null 
+0

只是好奇,你招待好使用「醇的schtasks的想法? –

回答

1

我沒有測試過這一點,但該代碼似乎缺少「重複」屬性這裏所說:http://msdn.microsoft.com/en-us/library/windows/desktop/aa446882(v=vs.85).aspx

還要注意的是,如果你定義的endboundary,那麼任務將不會邊界後運行。該代碼似乎在註冊後將其設置爲5分鐘。

沒有錯,使用.NET對象,如果你知道自己在做什麼,特別是如果的schtasks不能把工作做好,但是這似乎並不在這裏如此。

相關問題