gpt4 book ai didi

powershell - 在 MSBuild 中执行 powershell 脚本文件时使用 read-host cmdlet

转载 作者:行者123 更新时间:2023-12-04 02:15:57 24 4
gpt4 key购买 nike

全部,我正在尝试在 MSBuild 中执行外部电源 shell 脚本文件。但是每次PS运行cmdlet时Read-Host . MSBuild 似乎停止了。并且不提示我输入 .我不知道它发生了什么。似乎控制台陷入僵局......谢谢。

enter image description here

teSTLoop.ps1 代码如下所示。

$ErrorActionPreference = 'Stop'
$error.clear()


function GetAzureSubScription()
{
read-host "please input something :"
}

write-host "Get into script"

GetAzureSubScription

MSBuild 代码如下(为清楚起见进行了包装):
<Exec WorkingDirectory="$(MSBuildProjectDirectory)" 
Command="$(windir)\system32\WindowsPowerShell\v1.0\powershell.exe -f
E:\Work\AutoDeploy\testloop.ps1" />

最佳答案

所以是的,控制台(只是一个小问题 - powershell.exe 不在 cmd.exe 下运行 - 它们是单独的进程,但它们都使用控制台窗口)窗口是隐藏的,因此在提示输入时它看起来会卡住。这里最简单的选择是使用将使用图形窗口提示的版本覆盖读取主机功能。添加脚本的开头,添加以下函数:

# override the built in prompting, just for this script
function read-host($prompt) {
$x = 0; $y = 0;
add-type -assemblyname microsoft.visualbasic
[Microsoft.VisualBasic.Interaction]::InputBox($prompt,
"Interactive", "(default value)", $x, $y)
}

现在您的脚本将能够提示输入值。另外,你应该运行 powershell.exe-noninteractive参数来捕获您不小心调用交互式主机函数的任何其他地方。尽管如此,它不会阻止上述功能的工作。

关于powershell - 在 MSBuild 中执行 powershell 脚本文件时使用 read-host cmdlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20897265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com