将参数传递给Start-Job scriptblock?

时间:2013-02-02 17:58:13

标签: powershell powershell-v2.0

我想设置一个cmdlet来启动和停止mysql,我正在尝试使用Start-Job。我的Powershell个人资料中有以下内容:

$mysqlpath = "C:\Program Files\MySQL\MySQL Server 5.5\bin"
Function Start-Mysql
{
    Start-Job -ScriptBlock { & "$mysqlpath\mysqld.exe" }
}

然而,变量似乎没有在作业命令中扩展?我一定错过了某种范围规则。有人可以建议吗?谢谢!

1 个答案:

答案 0 :(得分:7)

您必须使用-argumentlist参数,请参阅get-help start-job

 start-job  -ScriptBlock { & $args[0] }} -ArgumentList @($mysqlpath )

请注意,在V3中,您只需在varname ex:

之前使用前缀using:
  Start-Job -ScriptBlock { & "$using:mysqlpath\mysqld.exe" }