在 PowerShell v3 中运行并行 Invoke-WebRequest 作业

2024-01-27

在 PowerShell 中运行同步后台作业非常简单,但我似乎无法让它与新的(v3 中)cmdlet Invoke-WebRequest 一起使用。

我正在通过 PowerShell 以脚本方式下载数千个文件。效果很好,但串联起来需要几天时间:

for($f=0;$f -lt $urlList.Count;$f++)
{
    $remote = $urlList[$f] + $fileList[$f]
    $local = 'C:\folder\' + $fileList[$f]
    Invoke-WebRequest $remote -Method Get -OutFile $local -UserAgent FireFox
}

我已经多次尝试利用“AsJob”方法,但要么出错,要么完成正常,但没有保存本地文件。这是后者的一个例子:

for($f=0;$f -lt $urlList.Count;$f++)
{
    $remote = $urlList[$f] + $fileList[$f]
    $local = 'C:\folder\' + $fileList[$f]
    $command = "Invoke-WebRequest $remote -Method Get -OutFile $local -UserAgent FireFox"
    Start-Job {Invoke-Expression -Command $command}
}
Get-Job|Wait-Job

输出示例:

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
339    Job339          BackgroundJob   Running       True            localhost            Invoke-Expression -Com...
341    Job341          BackgroundJob   Running       True            localhost            Invoke-Expression -Com...
343    Job343          BackgroundJob   Running       True            localhost            Invoke-Expression -Com...
339    Job355          BackgroundJob   Completed     True            localhost            Invoke-Expression -Com...
341    Job357          BackgroundJob   Completed     True            localhost            Invoke-Expression -Com...
343    Job359          BackgroundJob   Completed     True            localhost            Invoke-Expression -Com...

奇怪的是,上面的作业完成的速度大致与下载相关文件所需的速度一样......所以看起来数据正在某个地方 - 只是不是到我的保存位置。我认为它会被存入内存,但不会被保存而被转储。尝试添加和删除“PassThru”选项,但无论哪种方式都得到相同的结果。还尝试将其通过管道传输到 Out-File,但仍然没有乐趣。不知道为什么这个特定的 cmdlet 如此糟糕。


您需要以它们实际进入作业的方式传递参数。在 V3 中,您可以使用 $using: 语法来执行此操作:

for($f=0;$f -lt $urlList.Count;$f++)
{
    $remote = $urlList[$f] + $fileList[$f]
    $local = 'C:\folder\' + $fileList[$f]
    Start-Job {Invoke-WebRequest $using:remote -Method Get -OutFile $using:local -UserAgent FireFox}
}
Get-Job|Wait-Job

顺便说一句,您不需要使用 Invoke-Expression。只需将要在作业中运行的代码放入脚本块(即一组花括号)中{...}.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PowerShell v3 中运行并行 Invoke-WebRequest 作业 的相关文章

  • Windows 窗体:显示自适应省略号的单元格换行模式

    我正在使用 Windows 窗体 Datagridview 来显示一些 长 文本 代码是PowerShell 但问题与Cell Wrapping模式有关 TestGridView New Object System Windows Form
  • 将unix时间转换为字符串的Powershell函数?

    我正在尝试使用 ADO NET 和 PowerShell 读取 Firefox place sqlite datedase 的日期字段 显然这些字段是 Unix 时间的 我正在寻找 Net 日期时间或字符串的转换 Edit 我想将数据行绑定
  • Android:直接从浏览器下载文件

    我试图让 Android 浏览器下载特定类型 xxx 的文件 这样我就可以设置一个应用程序与其关联 我已经成功完成了关联部分 因为我已经做到了 以便在资源管理器应用程序中单击正确类型的文件会加载适当的应用程序 我希望这会转移到浏览器 这样如
  • 如何使用线程在 C# 中依次运行 3 个方法?

    我有三种方法 即方法1 方法2和方法3 方法1用于从一个站点下载图像 方法2用于从第二个站点下载图像 方法3用于比较图像 Method1 获取根据产品 id 逐一添加到列表中的图像 url 列表 即多个产品 id 的集合上有一个循环 然后根
  • 如何使用 PowerShell 将多个文本文件的列合并到一个 csv 文件中?

    我有多个测量文件 每个文件包含一列数字数据 Update 该脚本应该适用于可变数量的测量文件 数据1 dat 1 0 2 0 3 0 数据2 dat 10 0 20 0 30 0 数据N dat 1 1 1 如何使用以下命令将这些数据文件合
  • 命令提示符 con 的 Powershell 通讯员?

    例如 我想在屏幕上显示输出并将其复制到剪贴板 dir tee con clip 上面的方法不起作用 因为con在 PowerShell 的文件系统中不被识别为控制台 还可能存在以下场景 Get LongLongOutput tee con
  • 我想在 Red Hat Linux 服务器中执行 .ps1 powershell 脚本

    我有一个在窗口中执行的 ps1 powershell 脚本 但我的整个数据都在 Linux 服务器中 有什么可能的方法可以让我在红帽服务器中执行 powershell 脚本 powershell脚本是 Clear Host path D D
  • 使用 Powershell 远程安装 .msi

    我已经让他使用这个论坛上存在的代码来跟踪代码 cls computername Get Content C Users C201578 db Documents server txt sourcefile iceopsnas LNT Sof
  • Django 管理员 - 登录

    我正在建造一个Django Web App 与 Django Suit 用于管理界面 已经让 Python 2 7 Django 1 10 和 MySQL 和谐通信并启动了一个项目 python m django admin startpr
  • 获取对 SOAP 的 XML 响应中的节点值

    我在 PowerShell 中发出 SOAP 请求 如下所示 uri https secure echosign com services EchoSignDocumentService20 WSDL sun Invoke WebReque
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • Powershell 脚本无法从 SCCM 正常运行 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 有没有更快的方法来使用Powershell解析Excel文档?

    我正在与一个接口MS Excel文件通过Powershell 每个 Excel 文档可能有大约 1000 行数据 目前这个脚本似乎读取了Excel文件并以每 0 6 秒 1 条记录的速率将值写入屏幕 乍一看 这似乎非常慢 这是我第一次阅读E
  • 使用 powershell 获取短路径

    我正在尝试在 powershell 中使用以下代码来获取短路径 对于某些文件夹它有效 对于某些人来说它不起作用 a New Object ComObject Scripting FileSystemObject f a GetFile C
  • 对 CSV 文件中的列进行分组并连接另一列的值

    我刚刚开始使用 PowerShell 在任何地方都找不到这个问题的答案 尝试编写一个脚本来导入 CSV 文件并搜索该文件以查看是否有任何名称相同 如果名称相同 我想将所有这些值写在同一行上 并且只显示名称一次 例如 Name Number
  • 在 Powershell 中,按记录类型拆分大型文本文件的最有效方法是什么?

    我正在使用 Powershell 进行一些 ETL 工作 读取压缩文本文件并根据每行的前三个字符将它们拆分出来 如果我只是过滤输入文件 我可以将过滤后的流传输到 Out File 并完成它 但我需要将输出重定向到多个目的地 据我所知 这不能
  • 如果未提供值,如何从 cmdlet 中省略 powershell 参数?

    我正在尝试执行下面的 Powershell 命令 在交换服务器上创建一个新的地址列表 其中包含名称 容器等参数 Container是可选输入 参数 如果未提供其值 如何从 cmdlet 中省略它 我尝试过IF有条件但但似乎不起作用 这里有什
  • 在 Powershell 中使用用户名/密码连接到网络文件夹

    我经常在 Powershell 中访问共享网络文件夹以获取文件等 但如果共享需要用户名 密码 Powershell 不会提示我输入这些信息 这与 Windows 资源管理器不同 如果我首先在 Windows 资源管理器中连接到该文件夹 Po
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • powershell 中的展开存档无法提取嵌套文件夹和文件

    我有以下简单的 powershell 将 zip 文件夹 包含其他文件夹和仅日志文件 提取到目的地 FolderPath C Temp Whatever Expand Archive Path FolderPath logs zip Des

随机推荐

  • 推送到生产服务器时 ASP.NET MVC 错误 500

    我正在 C 项目中开发 ASP NET MVC 4 该项目在我的本地开发服务器上运行良好 但是 当我将其推送到生产服务器时 特定页面会出现 500 内部服务器错误 但是 我收到的错误并不比 处理您的请求时发生错误 更有帮助 如何强制 ASP
  • 如何在 PHP 中使用正则表达式解析 Apache 日志

    我正在尝试在 PHP 中分割这个字符串 11 11 11 11 25 Jan 2000 14 00 01 0100 GET 1986 js HTTP 1 1 200 932 http domain com index html Mozill
  • Xml - 使用Python按标签查找元素[重复]

    这个问题在这里已经有答案了 我正在尝试从一堆 xml 文件中提取一些数据 现在的问题是所有文件的结构并不完全相同 因此 仅迭代子文件并提取值是很困难的 有没有getElementByTag python 处理此类 xml 文档的方法 我发现
  • MATLAB 中的统计异常值检测

    假设我们有这个矩阵 main 10000 5 3 1 5 5677 0 134 1 1 456 3 该方法是计量经济学和统计问题中使用最广泛的方法 X是我们正在寻找异常值的数据 X mean X gt n std X 因此 如果这个不等式成
  • 仅在启动时无法找到运行时版本?

    我有一个非常简单的控制台应用程序 只是一个Console Write 来测试一些启动功能 我将其放在 Window 7 的启动文件夹中 但当它运行时 我收到 无法找到运行此应用程序的运行时版本 奇怪的是 如果我进入启动文件夹并实际运行该程序
  • 如何在keras批量更新期间缩放梯度?

    我正在使用标准 keras 模型 并且正在批量训练 使用train on batch功能 现在 我想获取批次中每个元素的梯度并对其进行缩放 将每个样本梯度与我拥有的样本特定值相乘 并且在缩放每个梯度后 可以将其求和并用于更新现有权重 无论如
  • HTML 输入 type="password" 的 Windows 批处理等效项是什么?

    我需要在 Windows 脚本中从用户那里获取身份验证凭据 但采用经典的 第一个 Google 结果 方法 SET P USR Username SET P PWD Password 不太令人满意 所以我想知道是否有一个 等价物 HTML
  • 帮我解决我的 JavaScript 测验 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我已经参加这个测验很多年了 只是无法
  • 从 std::vector 中连续擦除的安全方法?

    我认为下面的代码可以工作 但是当目标小部件位于向量末尾时它会崩溃 for std vector
  • 试图推迟我的部分计划

    我试图拍摄我打开的网页的快照 但我需要延迟代码的第二部分 以便程序有时间打开页面 这是代码 import os import sys import time import Image import ImageGrab import webb
  • MSBuild - 它可以计算出解决方案文件中的项目依赖关系吗?如果是这样怎么办?

    我有一个 msbuild 项目 它从 Visual Studio 构建一个 SLN 文件 其中包含所有项目 大约 70 多个项目 并且许多项目相互依赖 这意味着它们需要按顺序构建 有时开发人员会忘记在解决方案文件中的 Visual Stud
  • javascript 中函数声明后的冒号[重复]

    这个问题在这里已经有答案了 我正在查看 Vue js 的源代码 在几乎所有的函数声明中 我找到了一种定义函数的新方法 function isStringStart chr number boolean return chr 0x22 chr
  • 如何在leiningen项目中打包资源

    在示例项目中 https github com technomancy leiningen blob master sample project clj https github com technomancy leiningen blob
  • Anaconda提示加载错误:输入行太长

    我在 Windows 7 64 位版本上安装了 Anaconda 64 python 2 7 安装后 anaconda提示符可以正常启动 但是每当我重新启动 关闭并重新启动笔记本电脑时 anaconda提示符都会显示以下错误消息 并且某些p
  • 自动镜像 GitHub 存储库

    我怀疑这个问题以前曾被问过 尽管我能找到的都是相似但不同的问题 或者是相同的问题 但只有不适合我的解决方案 GitHub 上有一个我无法控制但想要镜像的存储库 对于镜像 我的意思是拥有一个自动更新的克隆 我希望这个镜像也能出现在 GitHu
  • 当使用 PHP 选择值“other”时,如何显示 HTML 输入字段

    我想弄清楚的是如何拥有一个 htmlinput当值为other从下拉菜单中选择 现在 下拉列表的值来自 MySQL DB 查询的结果 该查询有效 但我似乎无法弄清楚当我选择其他选项时如何显示输入 query mysql query SELE
  • Visual Studio 2015 + Xamarin + 本机便携式 PCL + WCF

    因此 我们的企业正在使用 Visual Studio 走 Xamarin 路线 浏览所有在线文档表明 从 Web 服务创建 WCF 代理客户端并将其放置在 PCL 中应该很简单 经过一番努力并试图找出为什么我无法使用 SLSVcUtil e
  • JavaScript使用变量的基本功能

    我目前正在 Codecademy 上学习 JavaScript 在那里 它给出了一个基本变量的示例 var divideByThree function number var val number 3 console log val 然而
  • C# 使用反射时确定 Nullable 属性 DateTime 类型

    我有一个关于如何确定对象的 Nullable 属性类型的问题 ObjectA有财产DateTime CreateDate 当我像下面的代码一样迭代它的属性时 如何检查属性是否是Nullable DateTime type foreach P
  • 在 PowerShell v3 中运行并行 Invoke-WebRequest 作业

    在 PowerShell 中运行同步后台作业非常简单 但我似乎无法让它与新的 v3 中 cmdlet Invoke WebRequest 一起使用 我正在通过 PowerShell 以脚本方式下载数千个文件 效果很好 但串联起来需要几天时间