PowerShell注册多个预定作业

时间:2015-07-31 05:54:54

标签: powershell scheduled-tasks

我已经成功拼凑了一个Powershell脚本,该脚本在运行时会询问服务器以及重新启动服务器的日期/时间。

我在使脚本安排多台服务器重启时有点迷失。是否可以像移除param $server一样简单并执行简单的$servers = GC TextFile.txt + foreach ($server in $servers)?我可以将每个预定作业命名为服务器名称,但是如何在执行后清除它?

此外,必须有一种更简单的方法来删除之前注册的Powershell预定作业,而不是我在下面汇总的frankencode。

Function ScheduleReboot{
 [CmdletBinding(SupportsShouldProcess=$true)]
Param(
 [Parameter(Mandatory=$true,
HelpMessage="ServerName goes here")]
 [string]$server,
 [Parameter(Mandatory=$true,
  HelpMessage="Enter a Date/Time 07-28-15 16:00 For July 28th, 2015 at 4:00 PM")]
  [ValidatePattern('(?#Enter MM-dd-YY HH:MM 24hr clock)\d{2}-\d{2}-\d{2}\s\d{2}[:]\d{2}')]
  $date)
 if($env:PROCESSOR_ARCHITECTURE -eq "x86")
 {
set-alias ps64 "$env:windir\sysnative\WindowsPowerShell\v1.0\powershell.exe"
ps64 -command "IF(Test-Path -Path C:\Windows\System32\Tasks\Microsoft\Windows\PowerShell\ScheduledJobs\RebootOnce2){Remove-Item -Force -Path C:\Windows\System32\Tasks\Microsoft\Windows\PowerShell\ScheduledJobs\RebootOnce2}" #End 64 bit powershell.
 }
Else
{
 Get-ScheduledJob | Unregister-ScheduledJob
}
$user = Get-Credential -UserName $env:USERNAME -Message "UserName/password for scheduled Reboot"
$trigger = New-JobTrigger -once -at $date
$script = [ScriptBlock]::Create("D:\Scripts\Scheduled-Reboot-Single.ps1 -server $server | Out-File -Force \\SysLogServer\d$\scripts\$server-Reboot.log")
Register-ScheduledJob -Name RebootOnce2 -Credential $user -Trigger $trigger -ScriptBlock $script
}#end function.

0 个答案:

没有答案