【问题标题】:scheduled tasks don't show up in Get-ScheduledTask result计划任务未显示在 Get-ScheduledTask 结果中
【发布时间】:2017-07-03 14:33:21
【问题描述】:

我在“\”[默认]路径下使用 Windows 任务计划程序 GUI 定义了一些计划任务,但是当我在 powershell 中运行 Get-ScheduledTask 时,它不会返回它们。为什么?

我尝试使用 Get-ScheduledTask -TaskName "MyTaskName" 与我的任务名称之一,但它出现“没有找到属性 'TaskName' 等于 'MyTaskName' 的 MSFT_ScheduledTask 对象”

其实我试过https://library.octopusdeploy.com/step-template/actiontemplate-windows-scheduled-task-disable,但是不行所以直接运行脚本试试。

更新 我找到了以下脚本来获取http://www.fixitscripts.com/problems/getting-a-list-of-scheduled-tasks 上的任务列表:

# PowerShell script to get scheduled tasks from local computer
$schedule = new-object -com("Schedule.Service")
$schedule.connect() 
$tasks = $schedule.getfolder("\").gettasks(0)
$tasks  | Format-Table   Name , LastRunTime    # -AutoSize
IF($tasks.count -eq 0) {Write-Host “Schedule is Empty”}
Read-Host

提前感谢您的帮助。

【问题讨论】:

  • 命令提示符中的“schtasks /query /v”返回什么?你看到你的任务了吗?
  • @DavidBrabant 它返回的信息很长,很难在​​其中找到特定的任务名称。

标签: powershell scheduled-tasks octopus-deploy windows2012


【解决方案1】:

UAC

结果可能会受到UAC 的影响。要查看所有内容,请尝试右键单击 PowerShell 图标,选择 Run as Administrator,然后再次运行 Get-ScheduledTask 命令,看看是否有任何变化。

延伸阅读: http://david-homer.blogspot.co.uk/2017/10/not-all-scheduled-tasks-show-up-when.html

【讨论】:

    【解决方案2】:

    从用户级提示运行 Get-ScheduledTask 时,即使用户是管理员,他们也只会看到他们可以使用用户级权限读取的任务。在 TaskSchd.Msc 窗口中看到它们表明程序正在以不同的权限运行。

    因此,以管理员身份运行 PowerShell 提示符即可解决问题。

    在命令提示符下使用 SchTasks.exe 时会出现同样的问题。

    只要我的两分钱。

    【讨论】:

      【解决方案3】:

      您是否尝试过使用 com 对象?这段代码对我有用:

      # FOR A REMOTE MACHINE
      $s = 'SERVER_NAME' # update this with server name
      ($TaskScheduler = New-Object -ComObject Schedule.Service).Connect($s)
      
      
      # FOR LOCAL MACHINE
      ($TaskScheduler = New-Object -ComObject Schedule.Service).Connect()
      
      #now we can query the schedules...
      cls;$TaskScheduler.GetFolder('\').GetTasks(0) | Select Name, State, Enabled, LastRunTime, LastTaskResult | Out-GridView
      

      此代码将检索特定任务并启用它:

      $task = $TaskScheduler.GetFolder('\').GetTask("TASKNAME")
      $task.Enabled = $true
      

      【讨论】:

      • 第一个不适用于 '.'也没有它。和 '。'它收到以下错误使用“1”参数调用“GetFolder”的异常:“仅当您连接到服务器时才支持此操作”
      • 第二个收到以下错误:使用“1”参数调用“GetTask”异常:“访问被拒绝。
      • 对不起,现在不在 Windows 机器上。尝试在提升的 PowerShell 会话中运行。此外,对于本地任务,语法需要稍有不同 - 请参阅我的编辑。
      • 再次使用最新的更改,同样的错误使用“1”参数调用“GetFolder”的异常:“仅当您连接到服务器时才支持此操作。我>
      • 抱歉,@mehran。你仍然需要连接,我没有测试。查看我的最新编辑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 2018-01-25
      • 2017-05-25
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多