Install
Install copied to clipboard
[Bug] install.ps1 fails via ssh/headless, windows server 2022, ansible
Bug Report
Current Behavior
Install script fails due to color arguments in the script.
Error message:
{
"changed": true,
"debug": [],
"error": [
{
"category_info": {
"activity": "Write-InstallInfo",
"category": "InvalidData",
"category_id": 6,
"reason": "ParentContainsErrorRecordException",
"target_name": "",
"target_type": ""
},
"error_details": null,
"exception": {
"help_link": null,
"hresult": -2146233087,
"inner_exception": null,
"message": "Cannot process argument transformation on parameter 'ForegroundColor'. Cannot convert null to type \"System.ConsoleColor\" due to enumeration values that are not valid. Specify one of the following enumeration values and try again. The possible enumeration values are \"Black,DarkBlue,DarkGreen,DarkCyan,DarkRed,DarkMagenta,DarkYellow,Gray,DarkGray,Blue,Green,Cyan,Red,Magenta,Yellow,White\".",
"source": null,
"type": "System.Management.Automation.ParentContainsErrorRecordException"
},
"fully_qualified_error_id": "ParameterArgumentTransformationError,Write-InstallInfo",
"output": "Write-InstallInfo : Cannot process argument transformation on parameter 'ForegroundColor'. Cannot convert null to type \r\n\"System.ConsoleColor\" due to enumeration values that are not valid. Specify one of the following enumeration values and \r\ntry again. The possible enumeration values are \"Black,DarkBlue,DarkGreen,DarkCyan,DarkRed,DarkMagenta,DarkYellow,Gray,Da\r\nrkGray,Blue,Green,Cyan,Red,Magenta,Yellow,White\".\r\nAt C:\\downloads\\scoop\\install.ps1:555 char:5\r\n+ Write-InstallInfo (\"Initializing...\")\r\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n + CategoryInfo : InvalidData: (:) [Write-InstallInfo], ParentContainsErrorRecordException\r\n + FullyQualifiedErrorId : ParameterArgumentTransformationError,Write-InstallInfo\r\n \r\n",
"pipeline_iteration_info": [],
"script_stack_trace": "at Install-Scoop, C:\\downloads\\scoop\\install.ps1: line 555\r\nat <ScriptBlock>, C:\\downloads\\scoop\\install.ps1: line 694\r\nat <ScriptBlock>, <No file>: line 2",
"target_object": null
}
],
"host_err": "",
"host_out": "",
"information": [],
"output": [],
"result": {},
"verbose": [],
"warning": []
}
Expected Behavior
Not to throw this exception.
Additional context/output
Possible Solution
I worked around this by removing the terminal color code in the Write-InstallInfo function of the install script.
System details
Windows version: Server 2022
OS architecture: 64bit
PowerShell version: 5.1
It seems that $host.UI.RawUI.ForegroundColor
returns null
with this setup.
https://github.com/ScoopInstaller/Install/blob/656e17b67e8468edc5c5bd51bdad55642a03d9a4/install.ps1#L72-L89
Could you try this modified Write-InstallInfo
function?
function Write-InstallInfo {
param(
[Parameter(Mandatory = $True, Position = 0)]
[String] $String,
[Parameter(Mandatory = $False, Position = 1)]
[System.ConsoleColor] $ForegroundColor = 'Gray'
)
$backup = $host.UI.RawUI.ForegroundColor
if ($null -eq $backup) {
$backup = 'Gray'
}
if ($null -eq $ForegroundColor) {
$ForegroundColor = 'Gray'
}
if ($ForegroundColor -ne $host.UI.RawUI.ForegroundColor) {
$host.UI.RawUI.ForegroundColor = $ForegroundColor
}
Write-Output "$String"
$host.UI.RawUI.ForegroundColor = $backup
}
Here is the result:
{
"category_info": {
"activity": "Write-InstallInfo",
"category": "NotSpecified",
"category_id": 0,
"reason": "SetValueInvocationException",
"target_name": "",
"target_type": ""
},
"error_details": null,
"exception": {
"help_link": null,
"hresult": -2146233087,
"inner_exception": {
"help_link": null,
"hresult": -2146233087,
"inner_exception": null,
"message": "A command that prompts the user failed because the host program or the command type does not support user interaction. Try a host program that supports user interaction, such as the Windows PowerShell Console or Windows PowerShell ISE, and remove prompt-related commands from command types that do not support user interaction, such as Windows PowerShell workflows.",
"source": "System.Management.Automation",
"type": "System.Management.Automation.Host.HostException"
},
"message": "Exception setting \"ForegroundColor\": \"A command that prompts the user failed because the host program or the command type does not support user interaction. Try a host program that supports user interaction, such as the Windows PowerShell Console or Windows PowerShell ISE, and remove prompt-related commands from command types that do not support user interaction, such as Windows PowerShell workflows.\"",
"source": "System.Management.Automation",
"type": "System.Management.Automation.SetValueInvocationException"
},
"fully_qualified_error_id": "ExceptionWhenSetting,Write-InstallInfo",
"output": "Write-InstallInfo : Exception setting \"ForegroundColor\": \"A command that prompts the user failed because the host \r\nprogram or the command type does not support user interaction. Try a host program that supports user interaction, such \r\nas the Windows PowerShell Console or Windows PowerShell ISE, and remove prompt-related commands from command types that \r\ndo not support user interaction, such as Windows PowerShell workflows.\"\r\nAt C:\\downloads\\scoop\\scoop_install.ps1:561 char:5\r\n+ Write-InstallInfo \"Initializing...\"\r\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n + CategoryInfo : NotSpecified: (:) [Write-InstallInfo], SetValueInvocationException\r\n + FullyQualifiedErrorId : ExceptionWhenSetting,Write-InstallInfo\r\n \r\n",
"pipeline_iteration_info": [
0,
1
],
"script_stack_trace": "at Write-InstallInfo, C:\\downloads\\scoop\\scoop_install.ps1: line 89\r\nat Install-Scoop, C:\\downloads\\scoop\\scoop_install.ps1: line 561\r\nat <ScriptBlock>, C:\\downloads\\scoop\\scoop_install.ps1: line 700\r\nat <ScriptBlock>, <No file>: line 2",
"target_object": null
}
I am also getting this error, to validate the other users bug report.