【问题标题】:Windows 2008 Server Scheduled TaskWindows 2008 服务器计划任务
【发布时间】:2018-04-04 12:24:37
【问题描述】:

我开发了一个脚本来提取 Windows 2012 R2 上的计划任务,它在 powershell 中运行得非常好。但实际上我有一个问题,因为我有一个 2008 服务器,它似乎没有 Get-ScheduledTask cmdlet。

我试图提取一些任务(名称很长)。我尝试使用

schtasks.exe /tn "Start*JOB*"

但没有成功,因为 cmd 返回和错误

ERROR: The system cannot find the path specified.

我的问题是:我们可以使用通配符通过一些字母而不是全名来查找任务/工作吗?否则,是否有任何其他解决方案可以获得相同的结果?

【问题讨论】:

    标签: powershell cmd scheduled-tasks windows-server-2008-r2


    【解决方案1】:

    您可以使用SCHTASKS /Query 并解析返回以执行您想要的任务。

    SCHTASKS /Query | Where-Object { $_ -like 'Start*JOB*' }
    

    【讨论】:

      【解决方案2】:

      使用 ComObject,您可以在 PowerShell 中工作来管理计划任务。

      $Scheduler = New-Object -ComObject Schedule.Service
      $Scheduler.Connect()
      $RootFolder = $Scheduler.GetFolder('\')
      $MyTask = $RootFolder.GetTasks(0) | ?{$_.Name -like "Start*JOB*"}
      

      然后您可以根据需要操作您的任务(通过方法启动/停止它,更改触发器,无论您想做什么)。或者,如果没有返回任何内容,您可以通过 $Scheduler 对象创建一个新任务。

      就此而言,您可以为 .Connect() 方法提供远程服务器名称并以这种方式管理远程计算机上的任务,而不必直接与旧的 2008 服务器交互。

      有关任务调度程序 API 的更多信息:https://msdn.microsoft.com/en-us/library/windows/desktop/aa384006(v=vs.85).aspx

      【讨论】:

        【解决方案3】:

        您可以考虑通过安装 WMF 2.0 和 3.0 来更新 PowerShell。

        执行get- scheduledtask 并将其通过管道传输到Where-Object。阅读https://technet.microsoft.com/en-us/library/jj649816(v=wps.630).aspxhttps://technet.microsoft.com/en-us/library/ee177028.aspx

        抱歉,我误读了您的计算机上没有计划任务 cmdlet。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-18
          • 2016-02-10
          • 2010-09-28
          • 1970-01-01
          • 2010-12-27
          • 1970-01-01
          相关资源
          最近更新 更多