2017-03-27 26 views
0

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としてタスク - しかし、運。

ありがとうございます。デフォルトでは

ロブ

+0

タスクの設定方法を教えてください。 '-NoProfile'のようなスイッチを使用していますか?既定では、構成されたタスクで同じことを行うPowerShellには、省略しないと多くのことがあります。 PowerShellをタスクにするほとんどの例がこれをカバーします。 – Matt

+0

私はPowerShellを試しています-NoProfile - ファイル "c:\ Data \ Admin \ Create-Snapshot \ Create-Snapshot.ps1" - このコマンドを使用してリモートからpowershellを実行するか、スケジュールされたタスクから実行すると遅くなります。またはpowershell ISEの.ps1スクリプトを直接開き、実行しても問題ありません。 –

+0

これはhttp://serverfault.com/questions/151824/process-runs-slower-as-a-scheduled-task-than-itと似ています-does-interactiveively –

答えて

1

任意のタスクは、「通常、以下の」優先順位で実行されます。

<Priority>7</Priority> 

変更はこれに:あなたはタスクスケジューラのうち、あなたのタスクをエクスポートし、XMLを開くと

次のように表示されます

<Priority>4</Priority> 

保存XML、タスクを削除して実行」インポートタスク "を選択します。編集したXMLを指していれば、このタスクは通常優先度で実行されます。

タスクマネージャでPowerShellのインスタンスを見つけて右クリックし、[優先度を設定]を選択することで優先度を確認できます。

関連する問題