从中央位置调度跨服务器的任务|作业。 (Windows Server)

有没有办法,如何安排从中央位置(服务器)的所有服务器上的Windows任务|作业? 微软有这个解决scheme吗? 我更喜欢MS或Windows Server内置function之前从SW第三方…

谢谢

[编辑]:对不可理解性抱歉。 我知道,我可以通过远程服务器上的“任务计划程序”来pipe理任务,或者我可以使用PowerShell来pipe理这些任务,但这不是简单的集中pipe理。 Cmdlet“Get-ScheduledTask”没有“服务器”参数,所以我需要连接个人到每个服务器,运行例如cmdlet“Get-ScheduledTask”,比运行在该服务器上的每个任务“Get-ScheduledTaskInfo”,因为cmdlet“Get-ScheduledTask”本身告诉你什么,这样从所有的服务器收集数据? 更不用说编辑任务了。 这真的不是一个简单的脚本。 我的想法是,例如我有“任务计划程序”,但具有来自所有指定服务器的任务。 或者至lessPowerShell cmdlet更好的方法来完成这个任务。 我认为,从一个地方pipe理所有服务器上的计划任务并不罕见,因此应该在Windows Server中实现。 需要在这样一个常见而简单的事情上写出相当复杂的脚本….

(顺便说一句,我正在使用Windows Server 2012)

所以我问,如果我错过了一些东西,或者如果我不想购买一些第三方软件的话,我真的需要写一个(很长的)脚本。

您可以使用组策略首选项来创build计划任务并通过GPO进行部署。 这可能是最快的方法来获得你要找的东西。

如果您有权使用System Center许可,则还应该探索System Center Orchestrator 。

编辑:我很惊讶,有4个以前的答案,没有提到GPO作为一种可能性,我写了一个快速简要的如何做到这一点的博客文章 。

默认情况下,Vista +和Server 2008 R2 +中的任务计划程序将允许您连接到另一台计算机上的任务计划程序 。

在这里输入图像说明

如果您需要完全脚本化的方法, 您还可以使用PowerShell远程处理 (如果您的操作系统支持这些cmdlet),或通过cmd.exe使用WinRM或PSExec执行此操作 。

PS cmdlet似乎缺乏pipe理计划任务的function,但是我认为您高估了任务报告的复杂性,或者在多个服务器之间创build相同的任务。

SCHTASKS exe是以编程方式pipe理任务的有用工具:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb736357%28v=vs.85%29.aspx

 # Inventory Report foreach ($server in gc .\serverList.txt) { write-warning $server SCHTASKS.EXE /s $server /query /fo csv > tasks.csv $csv = Import-Csv .\tasks.csv $csv | where {$_.taskname.lastindexof("\") -eq 0 -OR $_.taskname -match "\\Legacy" } # Ignore bultin OS tasks from MS } # Create task if missing foreach ($server in gc .\serverList.txt) { write-warning $server SCHTASKS.EXE /s $server /query /fo csv > tasks.csv $csv = Import-Csv .\tasks.csv if ( $csv.taskname.contains("\TaskNameToFind") ) { "Job already present" } else { SCHTASKS.EXE /s $server /Create /SC MONTHLY /MO first /D SUN /TN TaxTime C:\windows\system32\calc.exe } } 

您可以使用/ DELETE操作符在第二个示例中使用IF条件的前半部分,从而在多个服务器中删除相同的任务。

这取决于你想要执行的任务。

例如,您可以在一台机器上安排PowerShell命令,然后再连接到其他机器并执行powershell命令。

编辑:

从OP得到澄清之后,下面介绍如何从PS执行远程服务器上的命令:

 Invoke-Command -ComputerName MYCOMPUTERNAME -ScriptBlock { Get-ScheduledTask | Get-ScheduledTaskInfo | fl } 

为了给你另一个angular度 – 这通常是使用特殊的集中式软件,可以做到这一点是微软系统中心运营经理。

http://www.systemcentercentral.com/opsmgr-forum-discussion-task-automation-with-opsmgr-rules-or-windows-scheduled-tasks/

对此有一些讨论。

您可以在http://www.jamsscheduler.com/上find企业任务计划程序的示例 – function列表可能会启发您为何存在这些问题。

尽pipe一旦事情变得复杂起来,还有更好的第三方软件。 不像SCOM是坏的 – 但它不是专门的企业调度软件,某些pipe理包的一部分的调度部分。 Enterpise Scheduler可以运行具有复杂依赖关系的分布式工作stream(首先在这些机器上运行脚本a,一旦在机器b上完成该脚本,然后返回到在第一个集上清理脚本,而另一个机器上传文件)。

SCOM和企业调度程序的优势在于控制,核心,尤其是专门的控制。 自动化变得快速复杂,运营团队必须能够看到发生了什么。