我是Powershell脚本编写的新手,但是我试图修改我发现here的脚本,以便在Windows 2012 R2中使用Powershell导入一些XML计划任务。
我已成功使用此脚本将计划任务导入根[任务计划程序库]。
问题似乎是需要将Schedule Tasks导入到任务计划程序库下的子文件夹中,让我们说" SubTasks"
$task_path = "C:\Users\me\Desktop\ST Testing\exported ST's\scheduledTask.xml"
$task_user = "usr"
$task_pass = "pwd"
$schedule = new-object -com("Schedule.Service")
$schedule.Connect("server") # servername
#$folder = $schedule.GetFolder("\") <===This works fine
$folder = $schedule.GetFolder("\SubTasks") #<===This does not work
Write-Host $folder
Get-Item $task_path | % {
$task_name = $_.Name.Replace('.xml', '')
$task_xml = Get-Content $_.FullName
$task = $schedule.NewTask($null)
$task.XmlText = $task_xml
$folder.RegisterTaskDefinition($task_name, $task, 6, $task_user, $task_pass, 1, $null)
}
当我运行上面的Powershell脚本时,我收到了这个错误:
异常调用&#34; RegisterTaskDefinition&#34;用&#34; 7&#34;参数:&#34; The 指定的路径无效。 (HRESULT异常:0x800700A1)&#34; 在C:\ Users \ me \ Desktop \ ST Testing \ ImportSTs.ps1:22 char:5 + $ folder.RegisterTaskDefinition($ task_name,$ task,6,$ task_user, $ task_pass,... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:ComMethodTargetInvocation
提前致谢。
答案 0 :(得分:1)
Register-ScheduledTask
支持使用XML定义任务:
ngOnInit() {
// This is placed here in the in after view init is because it will throw exception as view will be change at that time
this.suggestions
.map((value, index) => {
this.suggestions[index].newSuggestion = value.descriptionSuggestion;
});
}
ngAfterViewInit() {
if (this.suggestions && this.suggestions.length > 0) {
this.suggestions
.map((value, index) => {
this.elementRef.nativeElement.querySelector('.class' + index).style.display = 'none';
});
}
}
请注意,您需要获取实际的XML 内容。 Register-ScheduledTask `
-User $task_user `
-Password $task_pass `
-TaskName ([IO.Path]::GetFileNameWithoutExtension($task_path)) `
-TaskPath '\SubTasks' `
-Xml (Get-Content $task_path -Raw)
标志可防止-Raw
返回Get-Content
,这也使String[]
感到不高兴。
还要注意,Register-ScheduledTask
有一个Register-ScheduledTask
参数,如果需要,您可以指定一个子文件夹来放置任务。
我不喜欢使用坟墓标记来延续行,所以我更喜欢使用散布法将内容分布在多行上:
-TaskPath
答案 1 :(得分:0)
能够满足我们的需求。
$task_user="username"
$task_pass="password"
$schedule=new-object -ComObject ("Schedule.Service")
$schedule.Connect("server")
$folder=$schedule.GetFolder("\tasks")
$path="\\server\c$\temp\Tasks\"
Get-ChildItem $path -Filter "*.xml"| foreach {
$task_conf=Get-Item -Path $_.FullName
$taskname=$task_conf.Name
$task_xml=$task_conf.FullName
$task=$schedule.NewTask(0)
$task.XmlText=(Get-Content $task_xml).Replace('Task version="1.1" xmlns','Task version="1.2" xmlns')
$folder.RegisterTaskDefinition($taskname,$task,6,$task_user,$task_pass,1,$null)
}