メールを送信するPowerShellスクリプトが1つあります。そのスクリプトを1分ごとに自動的に実行したいと思います。タスクスケジューラを使用してどうすればよいですか?
現在、タスクを作成し、スクリプトのパスを提供しています。しかし、そのスケジューラは、実行する代わりにスクリプトを開きます。
スケジュールされたタスクを作成し、アクションを次のように設定します。
プログラム/スクリプト:Powershell.exe
引数:-File "C:\Users\MyUser\Documents\ThisisMyFile.ps1"
-RepeatIndefinitely
以上でPowerShell 3.0または4.0を使用した例を次に示します。
# Trigger
$middayTrigger = New-JobTrigger -Daily -At "12:40 AM"
$midNightTrigger = New-JobTrigger -Daily -At "12:00 PM"
$atStartupeveryFiveMinutesTrigger = New-JobTrigger -once -At $(get-date) -RepetitionInterval $([timespan]::FromMinutes("1")) -RepeatIndefinitely
# Options
$option1 = New-ScheduledJobOption –StartIfIdle
$scriptPath1 = 'C:\Path and file name 1.PS1'
$scriptPath2 = "C:\Path and file name 2.PS1"
Register-ScheduledJob -Name ResetProdCache -FilePath $scriptPath1 -Trigger $middayTrigger,$midNightTrigger -ScheduledJobOption $option1
Register-ScheduledJob -Name TestProdPing -FilePath $scriptPath2 -Trigger $atStartupeveryFiveMinutesTrigger
タスクスケジューラでスクリプトへのパスのみを使用する代わりに、タスクスケジューラでスクリプトを使用してPowerShellを起動する必要があります。
C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NonInteractive -File "C:\Path\To\Your\PS1File.ps1"
これらのスイッチの説明については、powershell /?
を参照してください。
それでも問題が解決しない場合は、 この質問 をお読みください。
私の場合、スクリプトにはパラメーターがあるため、次のように設定します。
引数:-Command "& C:\scripts\myscript.ps1 myParam1 myParam2"
Unblock-Fileコマンドレットを使用して、この特定のスクリプトの実行のブロックを解除できます。これにより、セキュリティ上の懸念のために不要な永続的なポリシー変更を行うことができなくなります。
Unblock-File path_to_your_script
ソース:nblock-File
インターネットでの数時間のテストと調査の後、ビデオWindowsタスクを使用してPowerShellスクリプトをスケジュールするおかげで、タスクスケジューラを使用してPowerShellスクリプトを開始する方法がようやく見つかりましたジャック・フルーによるスケジューラー@sharepointjack。
プログラム/スクリプト-> powershell.exeにフルパスを入力
C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
引数を追加します->スクリプトへのフルパス、および「」なしのスクリプト。
開始(オプション)->スクリプトが存在するディレクトリ、「」なし。