Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 用于在计划程序中搜索特定任务并删除此任务的脚本_Powershell_Scheduled Tasks - Fatal编程技术网

Powershell 用于在计划程序中搜索特定任务并删除此任务的脚本

Powershell 用于在计划程序中搜索特定任务并删除此任务的脚本,powershell,scheduled-tasks,Powershell,Scheduled Tasks,我在这方面是个新手,我有点迷茫,但当我看:,这部分回答了我的问题。我正在寻找脚本,这将允许我搜索现有的任务,并删除他。问题出在Powershell版本中。在我的修订版中,Get-ShceduledTask不存在,我必须寻找解决方案,如何使用此cmdlet进行类似的搜索。我还必须注意,我无法将Powershell更改或升级到更好的版本 因此,总结一下,下面的代码在某种程度上是有效的,但是如果有一些代码可以帮助我找出如何实现这一点呢 $sched = New-Object -Com "Sc

我在这方面是个新手,我有点迷茫,但当我看:,这部分回答了我的问题。我正在寻找脚本,这将允许我搜索现有的任务,并删除他。问题出在Powershell版本中。在我的修订版中,Get-ShceduledTask不存在,我必须寻找解决方案,如何使用此cmdlet进行类似的搜索。我还必须注意,我无法将Powershell更改或升级到更好的版本

因此,总结一下,下面的代码在某种程度上是有效的,但是如果有一些代码可以帮助我找出如何实现这一点呢

$sched = New-Object -Com "Schedule.Service"
$sched.Connect()
$out = @()
$sched.GetFolder("\").GetTasks(0) | % {
    $xml = [xml]$_.xml
    $out += New-Object psobject -Property @{
        "Name" = $_.Name
        "Status" = switch($_.State) {0 {"Unknown"} 1 {"Disabled"} 2 {"Queued"} 3 {"Ready"} 4 {"Running"}}
        "NextRunTime" = $_.NextRunTime
        "LastRunTime" = $_.LastRunTime
        "LastRunResult" = $_.LastTaskResult
        "Author" = $xml.Task.Principals.Principal.UserId
        "Created" = $xml.Task.RegistrationInfo.Date
    }
}

$out | fl Name,Status,NextRuNTime,LastRunTime,LastRunResult,Author,Created

继续我的评论

它们只是文件系统中的文件

任务计划程序1.0 API使用

Get-ChildItem -Path 'C:\Windows\Tasks'
Get-ChildItem -Path 'C:\Windows\System32\Tasks' 
…用于创建和枚举任务的文件夹

任务计划程序2.0 API使用

Get-ChildItem -Path 'C:\Windows\Tasks'
Get-ChildItem -Path 'C:\Windows\System32\Tasks' 
…以创建和枚举任务

以及在注册表中:

Get-ChildItem -Path 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Schedule\Taskcache\Tasks'
Get-ChildItem -Path 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Schedule\Taskcache\Tree'
当然,使用Powershell(系统上的版本或可以通过PSRemoting从其他系统代理到系统的版本)只需将任务名称传递给cmdlet。当然,根据需要进行过滤,并在确定有所需内容时删除-WhatIf

Get-ScheduledTask | 
ForEach-Object {Unregister-ScheduledTask -TaskName $PSItem.TaskName -WhatIf}
这是我个人模块库中的一个函数

Function Get-ScheduledTasks
{
    [CmdletBinding(SupportsShouldProcess)]
    [Alias('gst')]

    Param
    (
    
    )

    schtasks.exe /query /v /fo csv | 
    ConvertFrom-Csv | 
    Where-Object { $PSItem.TaskName -ne 'TaskName' } | 
    Sort-Object TaskName | 
    Out-GridView -Title 'All scheduled tasks' -PassThru
}
从Out GridView中选择将使该选择可用于其他操作

您可以轻松地创建一个新函数来删除它们,或者在上面的函数中添加一个开关参数;添加此命令:

schtasks.exe /delete /tn "MyTasks/Task1" /f

到底是什么不起作用?您正在运行哪个版本的Powershell?也没有真正的理由使用COM。只需将Windows可执行文件用于计划任务:
schtasks.exe/?
。遗憾的是,Get-ScheduledTask cmdlet不存在,我只能看到Get-ScheduledJob。我知道,由于您使用的是PowerShell版本,因此您可以使用它。你在原来的帖子里已经说过了。这就是我发布自定义函数供您使用的原因。它不能替代本机PowerShell cmdlet。这是一个解决方案,您可以使用PowerShell版本,该版本包含您喜欢使用的cmdlet。我实际上可以通过PowerShell将if cmd设置为如果xml文件存在于C:\Windows\System32\Tasks中,如果是这样,则跳过任务的创建,否则创建taskAnyways thx对于您的答案,它将引导我选择一些选项无需担心。我们尽我们所能。