当前位置: 首页 > 知识库问答 >
问题:

在Windows 2012 R2中使用Powershell导入计划任务

宋唯
2023-03-14

我对Powershell脚本非常陌生,但尝试修改我在这里找到的脚本,以便在Windows 2012 R2中使用Powershell导入一些XML计划任务。

我已经成功地将计划的任务导入到根[任务计划程序库]使用此脚本。

问题似乎是调度任务需要导入到任务调度程序库下的子文件夹中,比如说“子任务”

$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脚本时,我收到这个错误:

异常调用带有“7”参数的“注册任务定义”:“指定的路径无效。(来自HRESULT的异常: 0x800700A1)”在C:\用户\我\桌面\ST测试\重要s.ps1:22 char: 5$文件夹。注册任务定义($task_name,$任务,6,$task_user,$task_pass,...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~类别信息:未指定: (:) [], 方法调用异常完全合格错误ID: ComomeodTargetInvtion

提前谢谢。

共有3个答案

濮阳征
2023-03-14

能够满足我们的需求。

$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)
} 
柴昆杰
2023-03-14

如果您使用的是powershell 3(win2k12——您也是)及以上版本,则有一个完整的任务调度模块。

请参阅:gcm-模块PSScheduledJob

然而,从xml导入任务似乎并不容易。

这里有一些模块,这个特殊的模块反序列化xml文件并测试所有设置,似乎比下面列出的解决方案更麻烦。

对于powershell 2(win2k8),我发现更容易使用schtasks-full ref here:

https://msdn.microsoft.com/en-us/library/windows/desktop/bb736357(v=vs.85)。aspx

例如(从xmlfile调度任务,任务将在特定的用户凭据下运行:

schtasks /Create /XML $xmlfile /RU $creds.UserName /RP $creds.GetNetworkCredential().Password /TN "My Task Name"

我通过手动创建任务并导出为xml(我从xml中删除了凭证和信息节点)获得了xml文件

蔡明贤
2023-03-14

注册ScheduledTask支持使用XML定义任务:

Register-ScheduledTask `
    -User $task_user `
    -Password $task_pass `
    -TaskName ([IO.Path]::GetFileNameWithoutExtension($task_path)) `
    -TaskPath '\SubTasks' `
    -Xml (Get-Content $task_path -Raw)

请注意,您需要获取实际的XML内容。-Raw标志可防止获取内容返回字符串[],这也会使寄存器调度任务不愉快。

还请注意,Register ScheduledTask有一个-TaskPath参数,允许您指定一个子文件夹,以便在需要时将任务放入其中。

我不喜欢用墓碑来延续线条,所以我更喜欢把东西分散在多行上:

$taskArgs = @{
    User='usr';
    Password='pwd';
    TaskName=([IO.Path]::GetFileNameWithoutExtension($task_path));
    TaskPath='\SubTasks';
    Xml=(Get-Content $task_path -Raw)
}

Register-ScheduledTask @taskArgs
 类似资料:
  • 我有一个PowerShell (PS)脚本,我想在每天早上5:00执行它。我想让它自动运行,所以我通过任务调度器(运行Windows 7旗舰版和SP1,64位)来安排它。作为一个测试,我写了一个简单的PS脚本,它只是将时间戳附加到一个文本文件中。它运行——我可以看到PowerShell窗口打开了,它写出了PS日志——但它没有写入文本文件。 脚本在命令行和PS shell中运行良好。无论是从计划时间

  • 我想每小时向我的用户发送推送通知。 以上是我试图每小时执行的内容。 但是当执行该脚本时,我得到的是一个错误消息: "Traceback(最近的调用最后): File"/home/User/Folder/Project/App/schedule.py",第1行,从push_notifications.models导入APNSDevice重要错误:没有名为push_notifications.mode

  • 我正在从事一个Spring Webflux项目,在计划任务中发布和使用Flux时遇到了一个问题。 我配置的调度程序: 除非我在最后故意阻止,否则这项任务永远不会完成: 我最初没有费心直接引用发布/订阅计划程序,我尝试了所有看似合理但没有效果的选项。 我的日志事件发生了,但当来自调度程序的该任务的线程死亡时,通量也会被丢弃;即使在我指定发布和订阅行为后,它们应该在自己的线程池中? 我想使这个行动完全

  • 我在Windows Server 2012的任务计划程序中有几个计划任务。我正在通过PowerShell运行这些任务 我正在寻找一种检查任务何时完成的方法。我认为我可以在<code>中检查任务的状态,$tasks 我本以为这段代码会导致< code>Ready,然后是< code>Running,但它最终打印出< code>Ready,< code>Ready。 我还注意到,当任务正在执行时,任务

  • 本文向大家介绍如何使用PowerShell启动任务计划程序的特定任务?,包括了如何使用PowerShell启动任务计划程序的特定任务?的使用技巧和注意事项,需要的朋友参考一下 要使用PowerShell启动任务计划程序的特定任务,我们需要使用Start-ScheduledTask 命令。 当我们运行上面的命令时,我们需要提供任务名称。 例如, 当您检查以上任务状态时, 示例 输出: 要在远程计算机

  • 我可以使用带有特定路径的Register ScheduledTask PowerShell cmdlet(即使用-TaskPath“\SomePath\”和-TaskName“SomeName”)在Windows中创建计划任务。我可以使用具有相同参数的Unregister ScheduledTask删除任务。我可以使用Windows“任务调度程序”GUI验证删除。但是,不会删除文件夹(“\Some