簡體   English   中英

如何在PowerShell v3中使用ComObject Schedule.service創建計划任務?

[英]How can I create a scheduled task with ComObject Schedule.service in PowerShell v3?

我要完成的任務:創建一個計划任務,每10分鍾運行一次。 如果服務器重新啟動,請繼續計划。

我可以在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  

但是我們的大多數服務器沒有v4的powershell,那么我該如何在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 

我尚未對此進行測試,但是該代碼似乎缺少此處提到的“重復”屬性: http : //msdn.microsoft.com/zh-cn/library/windows/desktop/aa446882(v=vs.85).aspx

另請注意,如果定義了邊界,則任務將不會在邊界之后運行。 該代碼似乎在注冊后將其設置為5分鍾。

如果您知道自己在做什么,尤其是在schtasks無法完成工作的情況下,使用.net對象沒什么大不了的,但在這里似乎並非如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM