在Invoke-Expression字符串

时间:2019-07-19 08:31:21

标签: git powershell

对于Powershell来说是很新的东西,所以我不确定目前是否以正确的方式进行操作,但是我正在努力将变量传递到Invoke-Expression字符串中,并希望某人将能够提供帮助。

$projectLocation = "C:/Users/Admin/Desktop/Projects/repo"

Invoke-Expression 'cmd /c start powershell -Command {
     cd $projectLocation;
     git pull
}'

我也尝试过用' + $projectLocation + '分割字符串,但是运气还不太好。

我实现目标的唯一方法是手动插入$projectLocation字符串。

我认为我距离还很遥远,但是任何帮助都会很棒!谢谢。

1 个答案:

答案 0 :(得分:3)

完全不需要评估生成cmd的代码以启动新的powershell.exe实例:

$projectLocation = "C:/Users/Admin/Desktop/Projects/repo"
cd $projectLocation
git pull

如果要抑制它可能产生的任何输出,只需将其包装在一个块或函数中,然后将输出流重定向到$null

function Pull-Repo
{
    param(
      [string]
      $projectLocation = "C:/Users/Admin/Desktop/Projects/repo"
    )

    Push-Location $projectLocation
    git pull
    Pop-Location
}

# suppress all output
Pull-Repo *> $null