【问题标题】:use powershell to find scheduled tasks set to wake the computer使用powershell查找设置为唤醒计算机的计划任务
【发布时间】:2013-12-30 00:26:10
【问题描述】:

我已经下载了位于此处的 powershell 脚本:http://gallery.technet.microsoft.com/scriptcenter/Get-Scheduled-tasks-from-3a377294

但是,这并没有提供我正在寻找的信息。我想看看是否有任何任务设置为唤醒电脑以运行该任务。我看到它在脚本中循环的位置并显示每个任务的属性。但我不熟悉使用 powershell 或 Schedule.Service 对象,所以我不知道那是什么属性。有人可以告诉我一种方法来获取设置为唤醒电脑的任务列表吗?或者只是告诉我如何编辑该脚本以显示该信息。

谢谢

【问题讨论】:

  • 查看我之前的答案之一:stackoverflow.com/questions/15439542/…@mjolinor 的 xml-path 应该可以工作,但我的示例将向您展示如何使用 COM 获取对象(和 xml-property),如果您不这样做有可用的Get-ScheduledTask cmdlet。该 cmdlet 仅在 Win8/2012 及更高版本中可用。
  • 对于我想运行它的电脑,它正在运行 windows 8.1
  • 好吧,那么您甚至不需要@mjolinor 建议的电源组。 Get-ScheuledTask 是built-in。对于未来的问题,您可以指定。除非标记或描述,否则我们假设 PowerShell 2.0 on winXP + :-)
  • @merk 我建议更新它以将Dan's 1-liner answer 标记为已接受

标签: windows powershell windows-8.1


【解决方案1】:

该信息应该在 xml 中。 编辑:Graimer 是正确的,这没有使用链接的相同脚本。
这使用了 PowerShellPack 中 TaskScheduler 模块中的 Get-ScheduledTask,可以从这里下载: http://archive.msdn.microsoft.com/PowerShellPack

$tasks = Get-ScheduledTask -ComputerName <ComputerName>

ForEach ($task in $tasks)
 {
   $xml = [xml]$task.xml
   if ($xml.task.settings.waketorun -eq 'True')
     { "Task $($task.name) is set to WakeToRun" }
 } 

或者干脆

 Get-ScheduledTask | select TaskName,TaskPath,@{name="Aufweckung.";expression={$_.Settings.WakeToRun}} -ExpandProperty Triggers | ft -AutoSize -Wrap

【讨论】:

  • Get-ScheduledTask 是 Windows 8+ 独有的 cmdlet。如果您谈论的是第 3 方 cmdlet,请链接到脚本/模块。您的解决方案不适用于@merk 提供的脚本
  • 你是对的。我提供了指向源代码(MSDN PowerShellPack)的链接。还包括一些其他有用的模块。
  • 谢谢 - 这将在 Windows 8.1 机器上使用,所以我应该很好。等我回家后我会试试这个。你能告诉我在哪里可以查找任务的可用属性吗?我尝试了一些 msdn 谷歌搜索,但无法找到可用于某项任务的所有属性。
  • 做一个get-task | fomrat-list * 在单个已知任务上。它将向您显示该任务的所有可用信息。
【解决方案2】:

在win8.1上:

$tasks = Get-ScheduledTask

ForEach ($task in $tasks)
{
    if($task.settings.waketorun -eq 'True')
        {"$($task.taskname)"}
}

【讨论】:

    【解决方案3】:

    您可以获得更多信息,以便您在任务计划程序中找到它:

    $tasks = Get-ScheduledTask
    
    ForEach ($task in $tasks)
    {
        if($task.settings.waketorun -eq 'True')
            {"$($task)"}
    }
    

    【讨论】:

    • 我正在使用此行来关闭所有唤醒设置: $tasks = Get-ScheduledTask $task.settings.WakeToRun = $false Set-ScheduledTask -TaskName $task.TaskName -TaskPath $task .TaskPath -Settings $task.Settings
    • 对 AlfeG 的代码进行一点改进;这列出了 WakeToRun 任务:Get-ScheduledTask |? { $_.Settings.WakeToRun }——这会关闭该“功能”:Get-ScheduledTask |? { $_.Settings.WakeToRun } |% { $_.Settings.WakeToRun = $false ; Set-ScheduledTask -TaskName $_.TaskName -TaskPath $_.TaskPath -Settings $_.Settings }。希望这可以防止更多的笔记本电脑在包里过热......
    • j0057 在他的评论中确实指出了 Get-/Set-ScheduledTask。
    【解决方案4】:

    这可以单行完成:

    Get-ScheduledTask | where {$_.settings.waketorun}
    

    Get-ScheduledTask 在 Windows 8.1、Windows PowerShell 4.0、Windows Server 2012 R2 中为 available

    【讨论】:

    • 神奇的 1-liner!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2021-08-25
    相关资源
    最近更新 更多