PowerShell スクリプトを実行すると、非常に奇妙な動作が発生しました。コマンドのサブコマンドを実行したいtf
。この実行可能ファイルは、通常、コンソール アプリケーションとして機能しますが、サブコマンドtf resolve
コマンドは、私が見たいダイアログを表示します。
ユース ケース 1b と 2b で何が起こっているのか、PowerShell の達人が説明してくれませんか? それとも、ここで何が問題なのかヒントがありますか?
備考:見つからない場合は、インストールに応じて 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