If I understand correctly I can set the script to execute asynchronously, it won't time out (?)
No, if the Run a program or PowerShell script action is set to execute asynchronously, the main operation (e.g. the execution of a scheduled task) will not wait until the action is completed. Other actions will continue executing. However, the script will still fail if its execution time exceeds the timeout for scripts execution configured in Adaxes.
I won't get any logging in Adaxes (which is fine)
The corresponding record will be logged in Adaxes after the action set to execute asynchronously is actually executed.
I have a variable in the script to save the results to a folder: <file share>\Offboarding\%username%\Veeam_results.txt" will the script still recoginize the %username% variable if it's run asynchronously?
All value references in all actions and conditions resolve before the conditions are checked and the actions are executed. It does not matter if the action is set to be executed asynchronously or not.
To achieve the required, you need to execute the script in an external PowerShell instance. For details and an example, have a look at the Using Start-Process script from the following repository article: https://www.adaxes.com/script-repository/run-script-in-new-powershell-instance-s290.htm.