Computer >> 컴퓨터 >  >> 체계 >> Windows Server

PowerShell로 예약된 작업을 어떻게 만들고 관리합니까?

대부분의 사용자와 관리자는 taskschd.msc를 사용합니다. Windows에서 예약된 작업을 만들고 관리하기 위한 그래픽 인터페이스 콘솔. 그러나 다양한 스크립트와 자동화된 흐름에서는 PowerShell 기능을 사용하여 예약된 작업을 만드는 것이 훨씬 더 편리합니다. 이 문서에서는 PowerShell을 사용하여 Windows 스케줄러 작업을 만들고 관리하는 방법을 보여줍니다.

PowerShell을 통해 Windows에서 예약된 작업 관리

예약된 작업 PowerShell 모듈은 Windows 10/Windows Server 2016에서 예약된 작업을 관리하는 데 사용됩니다. 다음과 같이 모듈에 cmdlet을 나열할 수 있습니다.

Get-Command -Module ScheduledTasks

  • 스케줄된 작업 비활성화
  • Enable-ScheduledTask
  • ScheduledTask 내보내기
  • Get-ClusteredScheduledTask
  • Get-ScheduledTask
  • Get-ScheduledTaskInfo
  • 새 예약된 작업
  • New-ScheduledTaskAction
  • New-ScheduledTaskPrincipal
  • New-ScheduledTaskSettingsSet
  • New-ScheduledTaskTrigger
  • Register-ClusteredScheduledTask
  • Register-ScheduledTask
  • Set-ClusteredScheduledTask
  • Set-ScheduledTask
  • Start-ScheduledTask
  • Stop-ScheduledTask
  • Unregister-ClusteredScheduledTask
  • 예약 취소 작업

PowerShell로 예약된 작업을 어떻게 만들고 관리합니까?

힌트 . 이전에는 기본 제공 콘솔 도구 schtasks.exe Windows에서 스케줄러 작업을 만들고 관리하는 데 사용되었습니다.

Windows PowerShell로 예약된 작업 만들기

최신 버전의 PowerShell(Windows Server 2012/Windows 8의 PowerShell 3.0부터 시작)에서는 New-ScheduledTaskTrigger를 사용할 수 있습니다. 및 Register-ScheduledTask cmdlet을 사용하여 예약된 작업을 만듭니다.

시작하는 동안(또는 특정 시간에) 실행되어야 하는 예약된 작업을 만들고 일부 PowerShell 스크립트 또는 명령을 실행해야 한다고 가정합니다. StartupScript1이라는 예약된 작업을 만들어 보겠습니다. 이 작업은 매일 오전 10시에 PowerShell 스크립트 파일 C:\PS\StartupScript.ps1을 실행해야 합니다. 작업은 SYSTEM 계정에서 상승된 권한("가장 높은 권한으로 실행" 확인란)으로 실행됩니다.

$Trigger= New-ScheduledTaskTrigger -At 10:00am -Daily
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\StartupScript1.ps1"
Register-ScheduledTask -TaskName "StartupScript1" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force

작업이 성공적으로 생성되면 "준비" 상태가 나타납니다.

PowerShell로 예약된 작업을 어떻게 만들고 관리합니까?

PowerShell 스크립트는 지정된 일정에 따라 실행됩니다. 컴퓨터에서 PS1 스크립트 실행을 방지하는 PowerShell 실행 정책이 활성화되어 있는 경우 –Bypass를 사용하여 예약된 작업에서 PowerShell 스크립트를 실행할 수 있습니다. 매개변수.

새 작업을 생성할 때 이 코드를 사용하십시오:

$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument “-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\PS\StartupScript.ps1"

팁. 컴퓨터 시작 중 매번 작업을 실행하려면 첫 번째 명령이 다음과 같아야 합니다.
$Trigger= New-ScheduledTaskTrigger -AtStartup
사용자가 로그온할 때 작업을 실행하려면:
$Trigger= New-ScheduledTaskTrigger -AtLogon

taskschd.msc를 엽니다. 콘솔을 열고 작업 스케줄러 라이브러리에 새 스케줄러 작업이 있는지 확인하십시오.

PowerShell로 예약된 작업을 어떻게 만들고 관리합니까?

Powershell 2.0(Windows 7, Windows Server 2008 R2)에서는 PowerShell에서 예약된 작업을 생성하기 위해 Schedule.Service를 사용할 수 있습니다. COM 인터페이스(또는 PowerShell 버전 업데이트). 이 예에서는 시작하는 동안 PowerShell 스크립트가 포함된 특정 파일을 실행하는 예약된 작업을 만듭니다. 작업은 NT AUTHORITY\SYSTEM으로 수행됩니다. 특권.

$TaskName = "NewPsTask"
$TaskDescription = "Running PowerShell script from Task Scheduler"
$TaskCommand = "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe"
$TaskScript = "C:\PS\StartupScript.ps1"
$TaskArg = "-WindowStyle Hidden -NonInteractive -Executionpolicy unrestricted -file $TaskScript"
$TaskStartTime = [datetime]::Now.AddMinutes(1)
$service = new-object -ComObject("Schedule.Service")
$service.Connect()
$rootFolder = $service.GetFolder("\")
$TaskDefinition = $service.NewTask(0)
$TaskDefinition.RegistrationInfo.Description = "$TaskDescription"
$TaskDefinition.Settings.Enabled = $true
$TaskDefinition.Settings.AllowDemandStart = $true
$triggers = $TaskDefinition.Triggers
#https://msdn.microsoft.com/en-us/library/windows/desktop/aa383915(v=vs.85).aspx
$trigger = $triggers.Create(8)

PowerShell을 사용하여 예약된 작업을 보고 실행하는 방법

다음 명령을 사용하여 Windows에서 모든 활성 예약된 작업을 나열할 수 있습니다.

Get-ScheduledTask -TaskPath | ? state -ne Disabled

특정 작업에 대한 정보를 얻으려면:

Get-ScheduledTask CheckServiceState| Get-ScheduledTaskInfo

LastRunTime : 4/7/2021 10:00:00 AM
LastTaskResult : 267011
NextRunTime : 4/8/2021 10:00:00 AM
NumberOfMissedRuns : 0
TaskName : CheckServiceState
TaskPath : \
PSComputerName :

PowerShell로 예약된 작업을 어떻게 만들고 관리합니까?

이 작업을 비활성화할 수 있습니다.

Get-ScheduledTask CheckServiceState | Disable-ScheduledTask

작업을 활성화하려면:

Get-ScheduledTask CheckServiceState | Enable-ScheduledTask

일정을 기다리지 않고 즉시 작업을 실행하려면 다음을 실행하십시오.

Start-ScheduledTask CheckServiceState

PowerShell로 예약된 작업을 어떻게 만들고 관리합니까?

작업 스케줄러 라이브러리에서 작업을 완전히 제거하려면:

Unregister-ScheduledTask -TaskName CheckServiceState

작업이 시작되는 사용자 이름을 변경해야 하는 경우(예:호환성 모드) Set-ScheduledTask를 사용하세요. cmdlet:

$task_user = New-ScheduledTaskPrincipal -UserId woshub\j.abrams' -RunLevel Highest
$task_settings = New-ScheduledTaskSettingsSet -Compatibility 'Win8'
Set-ScheduledTask -TaskName CheckServiceState_PS -Principal $task_user -Settings $task_settings

"Set-ScheduledTask: No mapping between account names and security IDs was done ” 올바른 사용자 이름을 제공했는지 확인하십시오.

PowerShell로 예약된 작업을 어떻게 만들고 관리합니까?

XML 파일을 통해 예약된 작업을 내보내고 가져오는 방법

PowerShell을 사용하면 예약된 작업의 현재 설정을 텍스트 XML 파일로 내보낼 수 있습니다. 따라서 모든 작업의 ​​매개변수를 내보내고 다른 컴퓨터에 작업을 배포할 수 있습니다. 작업은 작업 스케줄러 GUI와 PowerShell 콘솔에서 모두 내보낼 수 있습니다.

다음은 StartupScript라는 이름의 작업을 StartupScript.xml 파일로 내보내는 명령입니다.

Export-ScheduledTask StartupScript | out-file c:\tmp\StartupScript.xml

PowerShell로 예약된 작업을 어떻게 만들고 관리합니까?

Export-ScheduledTask cmdlet은 PowerShell 2.0에서 사용할 수 없으므로 Windows 7/Windows Server 2008 R2에서는 기본 제공 도구 schtasks를 사용하는 것이 좋습니다. 작업 설정을 내보내고 결과를 텍스트 파일로 리디렉션하려면:

schtasks /query /tn "NewPsTask" /xml >> "c:\tmp\NewPsTask.xml"

예약된 작업 설정을 XML 파일로 내보낸 후 GUI, SchTasks.exe 또는 PowerShell을 사용하여 모든 네트워크 컴퓨터로 가져올 수 있습니다.

Register-ScheduledTask cmdlet을 사용하면 XML 파일에서 작업 설정을 가져와 등록할 수 있습니다.
Register-ScheduledTask -Xml (Get-Content “\\mun-fs01\public\NewPsTask.xml” | out-string) -TaskName "NewPsTask"
PowerShell 2.0(Windows 7/Server 2008 R2)에서는 schtasks 도구를 사용하여 작업을 가져오는 것이 더 쉽습니다. 첫 번째 명령은 새 작업을 만듭니다. 두 번째는 트리거가 활성화될 때까지 기다리지 않고 즉시 실행합니다.

schtasks /create /tn "NewPsTask" /xml "\\Srv1\public\NewPsTask.xml" /ru corp\skrutapal /rp Pa$$w0rd
schtasks /Run /TN "NewPsTask"

이 예에서는 작업을 실행하는 데 사용되는 계정의 자격 증명을 사용합니다. 자격 증명이 지정되지 않은 경우 작업에 저장되지 않기 때문에 가져올 때 자격 증명이 요청됩니다.