使用TFS构建安装Chocolatey

时间:2017-12-20 11:43:07

标签: tfs chocolatey

我想在一系列测试代理上默默安装chocolatey,我试图使用TFS构建来实现这一点。我有一个构建步骤,使用"远程机器上的运行Powershell"任务。这反过来调用ps1从https://chocolatey.org/install.ps1安装chocolatey,我提供了如巧克力网站上所记录的powershell开关:

-NoProfile -InputFormat None -ExecutionPolicy Bypass

当我运行构建时,我收到此错误:

System.Management.Automation.RuntimeException:提示用户失败的命令,因为主机程序或命令类型不支持用户交互。尝试支持用户交互的主机程序(如Windows PowerShell控制台或Windows PowerShell ISE),并从不支持用户交互的命令类型(如Windows PowerShell工作流)中删除与提示相关的命令。 ---> System.Management.Automation.RuntimeException:提示用户失败的命令,因为主机程序或命令类型不支持用户交互。尝试支持用户交互的主机程序,例如Windows PowerShell控制台或Windows PowerShell ISE,并从不支持用户交互的命令类型中删除与提示相关的命令,例如Windows PowerShell工作流。

我做错了什么?似乎奇怪的是,巧克力安装程序需要用户交互,我认为巧克力的整点是安静的安装?

2 个答案:

答案 0 :(得分:1)

您似乎在“目标计算机上的PowerShell”任务中设置了错误的设置。请按照以下步骤操作:

  1. 在目标计算机上创建.ps1文件并指定以下文本:
  2.   

    Set-ExecutionPolicy Bypass -Scope Process -Force; iex((New-Object   System.Net.WebClient).DownloadString( 'https://chocolatey.org/install.ps1'))

    1. 在“目标计算机上的PowerShell”任务中,指定刚刚创建的.ps1文件的位置。

    2. 对构建进行排队。

    3. 查看下面的屏幕截图:

      enter image description here

答案 1 :(得分:0)

  

我做错了什么?似乎奇怪的是巧克力安装程序   需要用户互动,我认为巧克力的重点是   静音安装?

通常它会完全静默,除非有某些东西(如代理)需要输入。最好通过直接在机器上运行安装并查看发生的情况来确定可能导致问题的原因。

详细信息

install.ps1 passes overchocolateyInstall.ps1,调用chocolateySetup.psm1

当您查看该脚本时,您可能会注意到install.ps1使用Write-Output,但psm1在某些地方使用Write-Host。这可能会或可能不会导致问题,但鉴于脚本在PowerShell DSC中运行良好,这种情况不大可能。

所以它可能是一些事情:

  • 确保该脚本具有管理员权限的任何运行,否则您将收到拒绝访问错误(除非您指定不同的Chocolatey安装位置)。
  • 确保您不会因为需要输入代理凭据而受到打击(这由以下离线建议书修复)。
  • 确保您无法访问互联网资源(使用离线资源也可以修复)。
  • 它可能是导致弹出窗口的其他东西,比如需要安装.NET 4.x.建议您在安装Chocolatey之前安装4.x系列中的最新.NET Framework。

离线推荐

我们可以提供的最佳建议 - 不要在此脚本的任何部分使用互联网。如果你想要可靠性,你应该把所有东西都放在内部这包括您将用于Chocolatey的install.ps1脚本和chocolatey.nupkg本身。

请在https://chocolatey.org/install#completely-offline-install阅读以了解我们的建议。