当我执行PowerShell脚本时,我经历了一个非常奇怪的行为。我想运行tf
命令的子命令。该可执行文件通常用作控制台应用程序,但子命令tf resolve
命令显示一个对话框,我想查看它。当输出捕获到变量中时,PowerShell禁止TF命令UI
请问一些PowerShell Guru请解释一下,发生了什么事用例1b & 2b?或者你有什么暗示这里有什么问题?
备注:如果找不到,请根据您的安装修改VS版本。我正在使用VS 2015,PowerShell 4,Windows 8.1。
使用案例1A:显示 对话框(一切是好的)
$tfCommand = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\tf.exe"
& $tfCommand resolve
使用案例1B: 对话框不显示(WTF?!)
变化: STDOUT保存在变量中
$tfCommand = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\tf.exe"
$someVariable = & $tfCommand resolve
使用情况2A: 显示对话框(一切是好的)
$tfCommand = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\tf.exe"
function callTfResolve($tfCommand) {
& $tfCommand resolve
}
CallTfResolve $tfCommand
使用情况2B: 对话框不显示(WTF?!)
变化:返回值CallTfResolve
保存在变量中
$tfCommand = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\tf.exe"
function callTfResolve($tfCommand) {
& $tfCommand resolve
}
$someVariable = CallTfResolve $tfCommand