Powershell 在作业中引用变量参数

Powershell Quoted variables parameters in a job

$buildDef = "Service.xxxx"
$buildDefFull="MyProject/$buildDef"

Start-Job -Name 'Service1' -ScriptBlock { tfsbuild start /collection:"http://yyyy:8080/tfs/DefaultCollection"  /builddefinition:"$buildDefFull" }

我收到这个错误:

Option builddefinition requires a value.
    + CategoryInfo          : NotSpecified: (Option builddefinition requires a value.:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
    + PSComputerName        : localhost

我似乎无法让 tfsbuild 在启动作业中接受参数...如果我只执行 tfsbuild 部分但没有作业,它实际上运行良好。

知道我应该如何传递该值吗? 发送

$buildDefFull 变量在脚本块的范围之外。

您有 2 个选择:

PowerShell 3+

使用 Using 范围修饰符:

$buildDef = "Service.xxxx"
$buildDefFull="MyProject/$buildDef"

Start-Job -Name 'Service1' -ScriptBlock { tfsbuild start /collection:"http://yyyy:8080/tfs/DefaultCollection"  /builddefinition:"$Using:buildDefFull" }

任何版本

定义参数并将其传递给脚本块:

$buildDef = "Service.xxxx"
$buildDefFull="MyProject/$buildDef"

Start-Job -Name 'Service1' -ScriptBlock { param($bdf) tfsbuild start /collection:"http://yyyy:8080/tfs/DefaultCollection"  /builddefinition:"$bdf" } -ArgumentList $buildDefFull