我不明白为什么"start-job"只有在我输入"receive-job"时才开始



我在Powershell中有一个功能,可以从某个web服务器下载。jpg文件(使用invoke-webrequest)。当我在powershell命令行中调用该函数时,它会下载所请求的文件。但是,当我将它封装到start-job命令中时,只有在添加"receive-job"时,它才能工作。(我想在start-job中使用它,因为它是我同事的gui的一部分,因此需要一个processbar)。

与另一个函数"start-job"命令按预期工作。我做错了什么?

我代码:

function DNBDownload ( $pfad, $ISBN ){
$url = "https://a.certain.url/cover?isbn="
$out_file = $( $pfad + "" ) 
$file_endung =".jpg"
foreach ($i in $ISBN) {
Invoke-WebRequest $url+$i -OutFile $( "$out_file$i$file_endung" )
}
}
$job1 = Start-Job -scriptblock ${function:DNBDownload} -argumentlist $path, $ISBN

$path来自文件夹browserdialog调用,$ISBN来自剪贴板。

我还欠你我的解决方案。这很简单:我必须用$ProgressPreference = 'SilentlyContinue'抑制进度条(窗口显示为横幅)。在调用- webrequest命令之前添加这个之后,我的脚本按预期运行。我在那里找到了我的解决方案:隐藏Invoke-WebRequest的进度。

它为我工作(甚至做第二个),但它不显示进度条,直到receive-job。默认文件夹是~documents。我的测试:

start-job { invoke-webrequest https://live.sysinternals.com/procmon.exe -outfile procmon.exe }
dir ~documentsprocmon.exe
job | receive-job -AutoRemoveJob -wait

最新更新