2017-03-27 71 views
0

我的PowerShell脚本从IP摄像头获取快照,它运行在带有Windows 10 IoT Core的Raspberry Pi3上。通过计划任务脚本运行非常缓慢

当我从PowerShell运行脚本(只输入c:\scripts\snapshot.ps1)它运行良好。但是当我从cmd powershell -File c:\scripts\snapshot.ps1(我需要这个用于从任务调度器运行)运行它时,它运行的时间太长,需要整个CPU内核,几分钟后我就杀了它。

同样,当我从powershell运行此命令(no从cmd)。脚本将停止在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" 

编辑: 我的计划任务运行:

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 - 但没有运气。

谢谢你的时间。

Rob

+0

你如何配置任务?你正在使用'-NoProfile'这样的开关吗?默认情况下,PowerShell会加载很多内容,如果不省略,它将在配置的任务中执行相同的操作。大多数使PowerShell成为任务的例子将涵盖这一点。 – Matt

+0

我想要powershell -NoProfile文件“c:\ Data \ Admin \ Create-Snapshot \ Create-Snapshot.ps1” - 从PowerShell远程运行此命令或从计划任务运行速度慢,当我从cmd运行它时或直接在PowerShell ISE中打开.ps1脚本并运行,没关系.. –

+0

这看起来类似于http://serverfault.com/questions/151824/process-runs-slower-as-a-scheduled-task-than-it -does-interactively –

回答

1

默认情况下,任何任务以“低于正常”优先级运行。

如果您导出任务进行任务调度器,并打开XML,你会看到:

<Priority>7</Priority> 

更改为:

<Priority>4</Priority> 

保存XML,删除该任务并运行“导入任务“。指向您编辑的XML,您应该发现现在任务以普通优先级运行。

您可以通过在任务管理器中找到PowerShell实例来检查优先级,右键单击并选择“设置优先级”。

相关问题