我想在一系列测试代理上默默安装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工作流。
我做错了什么?似乎奇怪的是,巧克力安装程序需要用户交互,我认为巧克力的整点是安静的安装?
答案 0 :(得分:1)
您似乎在“目标计算机上的PowerShell”任务中设置了错误的设置。请按照以下步骤操作:
Set-ExecutionPolicy Bypass -Scope Process -Force; iex((New-Object System.Net.WebClient).DownloadString( 'https://chocolatey.org/install.ps1'))
答案 1 :(得分:0)
我做错了什么?似乎奇怪的是巧克力安装程序 需要用户互动,我认为巧克力的重点是 静音安装?
通常它会完全静默,除非有某些东西(如代理)需要输入。最好通过直接在机器上运行安装并查看发生的情况来确定可能导致问题的原因。
install.ps1 passes over到chocolateyInstall.ps1,调用chocolateySetup.psm1。
当您查看该脚本时,您可能会注意到install.ps1使用Write-Output
,但psm1在某些地方使用Write-Host
。这可能会或可能不会导致问题,但鉴于脚本在PowerShell DSC中运行良好,这种情况不大可能。
所以它可能是一些事情:
我们可以提供的最佳建议 - 不要在此脚本的任何部分使用互联网。如果你想要可靠性,你应该把所有东西都放在内部这包括您将用于Chocolatey的install.ps1脚本和chocolatey.nupkg本身。
请在https://chocolatey.org/install#completely-offline-install阅读以了解我们的建议。