【发布时间】:2016-06-18 01:41:49
【问题描述】:
我在执行 PowerShell 脚本时遇到了非常奇怪的行为。我想运行tf 命令的子命令。此可执行文件通常用作控制台应用程序,但子命令 tf resolve 命令会显示一个对话框,我想看到它。
能否请 PowerShell 大师解释一下,用例 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
【问题讨论】:
标签: powershell tfs tf-cli