使用 Chef 安装新遗物基础架构代理时 Powershell 脚本失败

Powershell script is failing when installing new relic infrastructure agent using chef

我在 Windows Server 2016 上安装了 MS SQL Server 2019。我正在尝试为 SQL Server 安装新的遗留集成。因为在集成部分之前,我们需要安装新的 relic 基础架构代理。当我手动使用下面的 powershell 脚本时它工作正常但在使用 chef 时不工作。

我正在使用下面的 Powershell 脚本通过 chef 安装它。

  # Install New Relic
  powershell_script 'new-relic-bootstrap' do
    code <<-PS
        [Net.ServicePointManager]::SecurityProtocol = 'tls12, tls'
        (New-Object System.Net.WebClient).DownloadFile("https://github.com/newrelic/newrelic-cli/releases/latest/download/NewRelicCLIInstaller.msi", "$env:TEMP\NewRelicCLIInstaller.msi")
        
        msiexec.exe /qn /i $env:TEMP\NewRelicCLIInstaller.msi | Out-Null
        
        $env:NEW_RELIC_API_KEY='ABC'
        $env:NEW_RELIC_ACCOUNT_ID='XYZ'
        
        # Prompting for input when userdata reaches this point
        & 'C:\Program Files\New Relic\New Relic CLI\newrelic.exe' install --skipLoggingInstall
        
        # Set hostname
        cd "C:\Program Files (x86)\ScaleFT\"
        $sftinfo = ./sftd.exe --debug-device-info --conf C:\Windows\System32\config\systemprofile\AppData\Local\ScaleFT\sftd.yaml | ConvertFrom-Json
        $name = $sftinfo.canonical_name + "-" + ($sftinfo.alt_names).split("-")[0] + " (" + ($sftinfo.alt_names).split("-")[1] + ")"
        Add-Content -Path "C:\Program Files\New Relic\newrelic-infra\newrelic-infra.yml" -Value "display_name: $name"
        
        # Restart service
        Get-Service -Name newrelic-infra | Restart-Service
        
    PS
    guard_interpreter :powershell_script
  end

当我 运行 上面的脚本失败并显示以下错误。

之后它显示了几次“Checking for data in New Relic”消息,当它选择 MS SQL Server Integration Installer

时,脚本崩溃并在以下位置退出

知道为什么使用厨师失败但手动工作正常吗?谢谢

它不是手动失败,因为当它要求从选项列表中进行选择时,我们手动按了回车键。使用 chef 时,我们没有传递任何参数或不控制选项选择部分。因此,只需在安装之后和 --skipLogging 之前传递参数 -y 即可。