Open jaw opened 6 months ago
It seems that $host.UI.RawUI.ForegroundColor
returns null
with this setup.
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.
Bug Report
Current Behavior
Install script fails due to color arguments in the script.
Error message:
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