Description
- What: elastic-agent.exe
- Version: 7.10.0 (but all previous too)
- OS: Windows 10 (as of 2020-11-24)
Problem:
In certain execution contexts PowerShell will convert any line of text sent to STDERR into an Error object. This will no doubt go unhandled thus the commend is failed by powershell:
PS C:\Users\Administrator\Documents\EC_Spout> C:\Users\Administrator\Documents\EC_Spout\agent_install+enroll.ps1
Uninstalling existing
Elastic Agent has been uninstalled.
The Elastic Agent is currently in BETA and should not be used in production
elastic-agent.exe : 2020-11-24T07:32:24.902-0800 DEBUG kibana/client.go:170 Request method: POST, path:
/api/fleet/agents/enroll
At C:\Users\Administrator\Documents\EC_Spout\agent_install+enroll.ps1:91 char:1
+ & "$download_dir\elastic-agent-$stack_ver-windows-x86_64\elastic-agen ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (2020-11-24T07:3...t/agents/enroll:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Google "PS NativeCommandError" to discover all the happy people that trip over this error.
Solution:
On Windows systems (especially under powershell) do not send anything to STDERR unless its really is an error, and the command should be terminated/failed.
Ways to reproduce:
In an Interactive PS, this error handling will most likely not be enabled. Under ISE is most often is.
Open PowerShell ISE and write a ps1 script:
& "$download_dir\elastic-agent-7.10.0-windows-x86_64\elastic-agent.exe" install -f -k "$kn_url" -t "$agent_token"
Run the script with the 'play' button in the toolbar (after saving it).
Doing it via ISE like this was the easiest way, I think, to have PS in such an error handling mode. I have experienced the same problem with PS scripts start by the task scheduler.
Extra info:
I maintain scripts to automate starting a demo env.: https://github.com/ElasticSA/ec_spout (more info for Elastic employees here: https://wiki.elastic.co/display/PRES/EC+Spout )