Get-ScheduledTask命令在Windows Server 2008 R2中不起作用

时间:2018-07-03 06:05:20

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

我正在尝试查找名称中具有特定模式的计划任务,在我的情况下,计划任务的名称中应具有此模式“ ServiceNow”。为此,我使用了Get-ScheduledTask命令,但是该命令在Windows Server 2008 R2中失败。

$taskPattern = "ServiceNow"
$taskDetails = Get-ScheduledTask | Where-Object {$_.TaskName -match $taskPattern  }
$taskName = $taskDetails.TaskName

此脚本因错误而失败:

  

“ Get-ScheduledTask:术语'Get-ScheduledTask'不被识别为   cmdlet,函数,脚本文件或可运行程序的名称。   检查名称的拼写,或者是否包含路径,请确认   路径正确,然后重试。”

然后,我尝试了这种方法,该方法为我提供了“((任务名称日期和时间状态)”),但我不知道如何仅从其输出中提取任务名称。

$taskPattern = "ServiceNow" 
$taskExists = schtasks /query | select-string -patt $taskPattern 
$taskExists

有人可以告诉我如何仅通过提取实际的任务名称来使其在Windows Server 2008 R2中工作吗? 在此先感谢

2 个答案:

答案 0 :(得分:9)

在Windows 2008 R2上您无法获得Get-ScheduledTask,因为Windows 2012 R2是Windows 2012 R2引入的schtask,没有人向后移植。有关更多信息,请参见github上的链接。

最能说明情况的评论是:

  

嗨@dronkoff-PS 4.0支持此模块。然而   问题不在PowerShell版本中。问题是   未构建此资源依赖的ScheduledTasks模块   Windows Server 2008R2。它最初包含在Windows Server中   2012。

     

许多PowerShell模块就是这种情况:它们丢失了   从Windows的旧版本(例如网络)中获取。奇怪的   周围有一个轻松的工作。但是在这种情况下转换   没有schools.exe的资源将无法使用   完全重写,可能会导致某些事情   不稳定和越野车(更不用说会产生的问题   schtasks的不同本地化版本)。我真的看不到   不幸的是(除非社区中的其他人   一些有关如何执行此操作的想法)。

     

但是您是正确的,应该提到Windows Server   当前不支持2008R2。

解决方法

解决方法是使用Microsoft和正确的开关。

如果您将它放在schtasks /tn \Microsoft\ServiceNow /query /fo LIST 文件夹中,就像我在示例中一样,则只需运行:

Folder: \Microsoft
HostName:      XXXXXACL06
TaskName:      \Microsoft\ServiceNow
Next Run Time: 7/4/2018 8:16:22 AM
Status:        Ready
Logon Mode:    Interactive only

输出:

/v

如果需要更多详细信息,可以使用schtasks /tn \Microsoft\ServiceNow /query /v > service_now_details.txt (详细)开关:

findstr

编辑-查找图案

如果仅要搜索模式,则必须使用一些其他工具来搜索字符串。 Windows本机支持Select-String(或Powershell中的sls(简称schtasks /query /fo LIST | findstr "ServiceNow" )):

要找到任务名称,您可以使用:

schtasks /query /fo LIST | findstr "ServiceNo*"

或者即使是租船合同也是如此

powershell

或通过schtasks /query /fo LIST | sls 'ServiceNo*' 方式:

ServiceNow

在所有情况下,输出都是这样的(因为我的任务的名称恰好是TaskName: \Microsoft\ServiceNow

findstr

Edit2 区分大小写

如果要搜索不区分大小写的字符串,则: 对于/I,您必须添加select-string使其不敏感。 Powershell的abc_(sls)自然不敏感。

答案 1 :(得分:1)

MS脚本库中有一个很棒的脚本,Get-ScheduledTasks(请注意服务名称末尾的S)。此功能适用于可追溯到Windows Server 2003 / Windows XP的Windows早期版本。

感谢惊人的Warren F(又名Rambling Cookie怪物)创建并分享了此内容。