Task Scheduler هو مكافئ Windows لـ cron — لا يقل أهمية. هذا الدليل ينشئ مهمة مجدولة بسرعة عبر PowerShell.
المتطلبات المسبقة
- Windows Server 2019/2022 مع PowerShell كمسؤول.
- سكربت للتشغيل — سنستخدم
C:\Scripts\nightly-cleanup.ps1.
الخطوة 1: اكتب السكربت
C:\Scripts\nightly-cleanup.ps1:
$Log = "C:\Logs\nightly-cleanup.log"
"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') Cleanup started" | Out-File $Log -Append
Get-ChildItem 'C:\inetpub\logs\LogFiles' -Recurse -Include '*.log' |
Where-Object LastWriteTime -lt (Get-Date).AddDays(-30) |
Remove-Item -Force -ErrorAction SilentlyContinue
"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') Cleanup finished" | Out-File $Log -Append
اختبره يدويًا:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\Scripts\nightly-cleanup.ps1
الخطوة 2: أنشئ المهمة المجدولة عبر PowerShell
$Action = New-ScheduledTaskAction `
-Execute 'powershell.exe' `
-Argument '-NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\nightly-cleanup.ps1"'
$Trigger = New-ScheduledTaskTrigger -Daily -At 02:30AM
$Settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -DontStopIfGoingOnBatteries
$Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask `
-TaskName "Nightly IIS log cleanup" `
-Action $Action -Trigger $Trigger -Settings $Settings -Principal $Principal
الخطوة 3: التحقق والتشغيل عند الطلب
Get-ScheduledTask -TaskName "Nightly IIS log cleanup" | Get-ScheduledTaskInfo
Start-ScheduledTask -TaskName "Nightly IIS log cleanup"
Get-ScheduledTask -TaskName "Nightly IIS log cleanup" | Get-ScheduledTaskInfo |
Format-List LastRunTime, LastTaskResult
الخطوة 4: مشغلات غير زمنية
$Trigger = New-ScheduledTaskTrigger -AtLogOn -User "CORP\ops"
$Trigger = New-ScheduledTaskTrigger -AtStartup
الخطوة 5: تصدير و version control
Export-ScheduledTask -TaskName "Nightly IIS log cleanup" |
Out-File "C:\Repos\ops\tasks\nightly-iis-cleanup.xml" -Encoding UTF8
Register-ScheduledTask -TaskName "Nightly IIS log cleanup" `
-Xml (Get-Content "C:\Repos\ops\tasks\nightly-iis-cleanup.xml" -Raw) `
-User "SYSTEM" -Force
التحقق
Get-ScheduledTask | Where-Object State -ne "Disabled" | Format-Table TaskName, State
Get-WinEvent -LogName "Microsoft-Windows-TaskScheduler/Operational" -MaxEvents 20
الخاتمة
Task Scheduler يتفوق على cron في مشغلات غنية وهوية لكل مهمة. يخسر في البساطة، لكن New-ScheduledTask* يجعله قابلاً للسكربتة.
Comments
0 total · 0 threads