In the Shell interface, we don't need to present shell options on operating systems that will not support them. Powershell is now open source and could be on Linux and MacOS even if it's unlikely. Windows CMD will only be on Windows and Bash will not be installed, if it's installed at all, at a UNIX path on Windows. Instead, hide CMD on non-Windows and hide Bash on Windows. Additionally, on non-Windows clients, Bash is the default shell.
The quarantine functionality is Windows-only ATM due to the artifact used being called Windows.Remediation.Quarantine. There's a precondition that ensures it doesn't run on !Windows, but the UI expects the query to run to completion just the same. Instead, choose an appropriate artifact name based on the client OS and check that it exists. If it does not exist, pop a warning instead of attempting to do it anyway. This also means that adding quarantine support for Linux and MacOS is as simple as adding the appropriate artifact.
This PR contains a few UI improvements:
Windows.Remediation.Quarantine
. There's a precondition that ensures it doesn't run on !Windows, but the UI expects the query to run to completion just the same. Instead, choose an appropriate artifact name based on the client OS and check that it exists. If it does not exist, pop a warning instead of attempting to do it anyway. This also means that adding quarantine support for Linux and MacOS is as simple as adding the appropriate artifact.