powershell - 如何在 Start-Job 中通过引用传递变量?

标签 powershell parameters pass-by-reference

如何修改 Start-Job 中的变量?此代码输出 0,似乎是因为变量是按值传递的:

$vara = "0"

$j = start-job -ScriptBlock {
   $args[0] = "1"
} -ArgumentList $vara

wait-job $j > $null
receive-job $j

Write-Host $vara  ## => "0"

如何通过引用传递参数(因此输出 1)?

最佳答案

修改作业中的任何内容时完全超出了范围。没有什么会神奇地填充到您当前的 session 中。

你可以这样做:

$vara = "0"

$j = start-job -ScriptBlock {
   "1"
} -ArgumentList $vara

wait-job $j > $null
$vara = receive-job $j

Write-Host $vara

如果你需要填充很多参数,你可以这样做:

$vara = "0"

$j = start-job -ScriptBlock {
   [pscustomobject]@{
      vara1 = "1"
      vara2 = "0"
    }
} -ArgumentList $vara

wait-job $j > $null
$vara = receive-job $j

Write-Host $vara.vara1

关于powershell - 如何在 Start-Job 中通过引用传递变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52970853/

相关文章:

C++ 参数传递数组与单个项

java - JMockit 和按引用传递。我们中的一个一定是错的(而且可能是我!)

PowerShell 如何自动重启服务?

powershell - 远程 PowerShell 脚本不应用 Hyper-V 快照

powershell - 删除 Pester 模拟函数

matlab - 在 Matlab 中传递参数

azure - FunctionApp 中的 ExpiredAuthenticationToken

swift - 在 Swift 中有选择地将类的属性传递给类方法

ios - 这个 swift 函数发生了什么?

c++ - 传递参数之间的区别