powershell - 后台作业似乎没有运行

标签 powershell

我在作为 bkground 作业启动的 powershell 2.0 脚本中有函数

Start-Job -ScriptBlock {CopyDataToServer($uploadSessionGuid)} -Name $uploadSessionGuid

然后在脚本的末尾我有

Wait-Job -State Running -Timeout $LogCopyTimeout

事件虽然作业显示为“正在运行”然后已完成,但没有任何内容复制到服务器。

如何调试这个?

最佳答案

Roman 的说法是正确的,CopyDataToServer 和 $uploadSessionGuid 可能没有在作业执行的运行空间中定义(赞成他的答案)。顺便说一句,我相信等待特定的作业对象比等待任何处于运行状态的作业更好,例如:

$job = Start-Job {param($path, $guid) . $path\lib.ps1; CopyDataToServer $guid} `
       -arg $pwd,$uploadSessionGuid
Wait-Job $job
Receive-Job $job

请注意,您可以使用 -ArgumentList 参数将参数传递到脚本 block 。虽然您可以通过 $args 在脚本 block 中访问这些参数,但我更喜欢使用参数 block 并命名参数。此示例还展示了如何将路径传递到包含函数 CopyDataToServer 的 PowerShell 脚本,该函数将点源获取到作业的运行空间中。

关于powershell - 后台作业似乎没有运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4523463/

相关文章:

powershell - 如何正确忽略 PowerShell 中的 Import-Module 错误

xml - Gmail 提要 : Retrieve body from latest email. Powershell

SQL 网络接口(interface),错误 : 25 - Connection string is not valid in Powershell

powershell - 添加-AzureAccount : user_realm_discovery_failed: User realm discovery failed: Unable to connect to the remote

php - 如何在 PHP 中运行 Powershell 脚本?

尝试 -SkipCertificateCheck 时 Powershell iwr 失败

windows - "Extend my Windows desktop onto this monitor"以编程方式

powershell - 重命名项认为变量是一个路径

windows - 在更改为cmd后的powershell中无法通过批处理脚本文件调用bat文件

powershell - 在部署期间使用脚本从 SCCM 检索应用程序属性