My PowerShellスクリプトは、IPカメラからスナップショットを取得し、Windows 10 IoTコアを搭載したRaspberry Pi3で実行されます。スケジュールされたタスクでスクリプトが非常に遅く実行される
スクリプトをPowerShell(c:\scripts\snapshot.ps1
タイプのみ)から実行すると、うまく動作しています。しかし、私がcmd powershell -File c:\scripts\snapshot.ps1
(これはタスクスケジューラから実行するために必要です)から実行すると、時間がかかり過ぎてCPUコア全体を占有してしまい、数分間実行した後に強制終了します。
私がpowershell(cmdからのno)からこのコマンドを実行したときと同じです。スクリプトはInvoke-WebRequest -Uri $url -Headers $Headers -OutFile "$dir\$outFile"
で停止します。ファイル$outFile
が作成されますが、内容はなく、実行中で実行中です。私は全体のスクリプトが遅すぎることを観察します。スクリプトを2 Write-Output
とだけ実行すると、2つの文字列の間に遅延があります。 私は-MTA
と-NoProfile
といくつかの次のpowershell.exe
引数を試しましたが、運がありません。
マイスクリプト:
$user = 'operator'
$pass = 'password'
$url = 'http:\\url.jpg'
$dir = "c:\outputdir"
$date = Get-Date
$date = $date.ToString("yyyy-MM-dd_HH-mm-ss")
$outFile = "snapshot_$date.jpg"
$pair = "$($user):$($pass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{
Authorization = $basicAuthValue
}
Invoke-WebRequest -Uri $url -Headers $Headers -OutFile "$dir\$outFile"
EDIT: 私のスケジュールされたタスクを実行するには:
Folder: \
HostName: pi
TaskName: \Create-snapshot
Next Run Time: 3/27/2017 3:32:00 AM
Status: Running
Logon Mode: Interactive/Background
Last Run Time: 3/27/2017 3:31:02 AM
Last Result: 267009
Author: pi\Administrator
Task To Run: C:\Data\Admin\Create-Snapshot\Create-Snapshot-Start.bat >> "c:\Data\Admin\Create-Snapshot\Log\Create-Snapshot-start 2017-03-27 2_47_25.log"
Start In: N/A
Comment: N/A
Scheduled Task State: Enabled
Idle Time: Disabled
Power Management: Stop On Battery Mode, No Start On Batteries
Run As User: Administrator
Delete Task If Not Rescheduled: Disabled
Stop Task If Runs X Hours and X Mins: 72:00:00
Schedule: Scheduling data is not available in this format.
Schedule Type: One Time Only, Minute
Start Time: 12:56:00 AM
Start Date: 3/27/2017
End Date: N/A
Days: N/A
Months: N/A
Repeat: Every: 0 Hour(s), 1 Minute(s)
Repeat: Until: Time: None
Repeat: Until: Duration: Disabled
Repeat: Stop If Still Running: Disabled
私が実行しようとしたNT AUTHORITY \ SYSTEMとしてタスク - しかし、運。
ありがとうございます。デフォルトでは
ロブ
タスクの設定方法を教えてください。 '-NoProfile'のようなスイッチを使用していますか?既定では、構成されたタスクで同じことを行うPowerShellには、省略しないと多くのことがあります。 PowerShellをタスクにするほとんどの例がこれをカバーします。 – Matt
私はPowerShellを試しています-NoProfile - ファイル "c:\ Data \ Admin \ Create-Snapshot \ Create-Snapshot.ps1" - このコマンドを使用してリモートからpowershellを実行するか、スケジュールされたタスクから実行すると遅くなります。またはpowershell ISEの.ps1スクリプトを直接開き、実行しても問題ありません。 –
これはhttp://serverfault.com/questions/151824/process-runs-slower-as-a-scheduled-task-than-itと似ています-does-interactiveively –