پاورشل یک ویژگی عالی برای انجام کارهای تکراری توسط مدیرسیستم می باشد ، برای مثال من همیشه یک سری اسکریپت را با پاورشل به صورت زمانبندی شده انجام میدم و نتایج را به صورت آنلاین چک می کنم (چک کردن آنلاین در مقاله های بعدی توضیح داده می شود). در مقاله زیر ساخت یک فعالیت زمانبندی شده برای Power Shell به کمک Windows Task Scheduler توضیح داده می شود.
برای اجرای خودکار اسکریپت های پاورشل می توانید از Windows Task Scheduler استفاده کنید ، واما چگونه؟
ساخت تسک از WIZARD :
در این روش شما به صورت دستی تسک مورد نظر می سازید:
ابندا به مسیر زیر در ویندوز سرور بروید
Start >> Administrative Tools >> Task Schedule
از منوی Action گزینه “Create a Basic Task” بزنید :
![ساخت یک فعالیت زمانبندی شده](https://sharepointhome.ir/wp-content/uploads/2019/08/22.png)
سپس نام تسک را مشخص کنید و همین طور شرح آن را :
![ساخت یک فعالیت زمانبندی شده](https://sharepointhome.ir/wp-content/uploads/2019/08/task.png)
دوره تکرار زمانبندی مورد نظرتان را انتخاب کنید:
![ساخت یک فعالیت زمانبندی شده](https://sharepointhome.ir/wp-content/uploads/2019/08/time.png)
جزئیات زمانبندی را مشخص کنید:
![ساخت یک فعالیت زمانبندی شده](https://sharepointhome.ir/wp-content/uploads/2019/08/times.png)
نوع فعالیت را انتخاب کنید:
![ساخت یک فعالیت زمانبندی شده](https://sharepointhome.ir/wp-content/uploads/2019/08/faaliat.png)
در بخش Program\Scrip برای اجرای پاورشل آدرس زیر را وارد کنید:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
در بخش Arguments نیز مسیر فایل اسکریپت که با سوند ps1 ساخته اید بدهید:
C:\Users\spadmin\Desktop\SitePermission.ps1
![ساخت یک فعالیت زمانبندی شده](https://sharepointhome.ir/wp-content/uploads/2019/08/basic.png)
در بخش بعد تیک Open the Properties dialog for this task when I click Finish را بزنید تا برگه خصوصیات تسک باز شود.
![ساخت یک فعالیت زمانبندی شده](https://sharepointhome.ir/wp-content/uploads/2019/08/save.png)
دراین قسمت گزینه ها را مطابق شکل تیک بزنید و پس از زدن دکمه Ok در کادر باز شده پسورد اکانت مربوطه را وارد کنید.
![ساخت یک فعالیت زمانبندی شده](https://sharepointhome.ir/wp-content/uploads/2019/08/run.png)
در صورت تمایل می توانید خصوصیات تسک به وجود آمده را با راست کلیک بر روی تسک و انتخاب گزینه Properties تغیر بدهید.
اجرای تسک به صورت دستی با توجه به نیاز
در برخی از موارد نیاز دارید تسک ها را زود تر از زمانبندی اجرا کنید برای این کار بر روی تسک مورد نظر کلیک راست کنید و گزینه Run را بزنید.
![ساخت یک فعالیت زمانبندی شده](https://sharepointhome.ir/wp-content/uploads/2019/08/run2.png)
ساخت تسک با CMD
برای ساخت تسک می توانید به جای استفاده از UIویندوز از کپی و پیست کد زیر استفاده کنید.
schtasks /create /TN “Content Database Report” /SC monthly /mo 1 /ST 00:00 /RU “Domain\UserName” /RP “Password” /RL “HIGHEST” /TR “PowerShell D:\Scripts\ContentDatabaseReport.ps1”
این کد تسک را در حالت Run with highest privileges و نیز Run whether the user is logged on or not
می سازد.
اجرای تسک ها با پارامتر:
فرض کنید که در اسکریپتی که نوشته اید پارمتری به نام “$WebAppURL” دارید که به صورت زیر می باشد:
Param(
[parameter(Mandatory=$true)] $WebAppURL
)
# We’ll trigger the script as: .\StorageReport “http://sharepoint.crescent.com”
که ما آن را به صورت زیر در پاورشل اجرا می کنیم :
.\Report_permission “http://daryabari.id.ir”
در بخش Argument های تسک باید مشابه عبارت زیر را بنویسم:
C:\\Report_permission “http://daryabari.id.ir”
برای زمانی که چند پارامتر در اسکریپت خود دارید مشابه زیر:
Param)
[parameter(Mandatory=$true)] $WebAppURL,
[parameter(Mandatory=$true)] $OutPut
(
در بخش Argument باید اسم هر پارمتر در ابتدا و مقدار آن بعد از اسم بیایید مشابه کد زیر :
# We trigger it as: C:\\Report_permission -WebAppURL “http://daryabari.id.ir ” -output “d:\Reports\StorageReport.csv”
ساخت تسک زمانبدی شده با پاورشل
شما همچنین می توانید برای ساخت یک فعالیت زمانبندی شده برای Power Shell استفاده کنید ، این گزینه از ویندوز سرور 2012 R2 به بعد امکان پذیر می باشد (روش مورد علاقه من).
کافی هست اسکریپت زیر را در بخش متغییر ها با توجه به نیازتان بروز رسانی کنید و آن را در پاورشل ویندوز اجرا کنید.
#متغییر ها که باید تغییر بدهید
$TaskName = “Audit Large Lists”
$username =”Crescent\SP13_FarmAdmin”
$password =”Password Here”
#Create Scheduled Task
$Action = New-ScheduledTaskAction -Execute “PowerShell.exe” -Argument “E:\Scripts\AuditLists.ps1”
$Trigger = New-ScheduledTaskTrigger -Daily -At 1am
$ScheduledTask = New-ScheduledTask -Action $action -Trigger $trigger
Register-ScheduledTask -TaskName $TaskName -InputObject $ScheduledTask -User $username -Password $password
ساخت یک فعالیت زمانبندی شده برای Power Shell