You're seeing a bug in ForEach-Object -Parallel / Start-ThreadJob, present up to at least PowerShell Core 7.0:
Your Write-Information output should show, because you've used -InformationAction Continue to turn it on; while your Write-Verbose output not showing is expected, because you didn't turn it on with -Verbose, it also wouldn't show if you did use -Verbose, due to the bug.
See GitHub issue #13816.
The workaround is to also set the preference variable $InformationPreference in order to turn on the information stream, before calling ForEach-Object -Parallel (see below).
Separately, there's a conceptual problem with your code:
- You're passing the - -Verbosecommon parameter to your- write-Testfunction, yet this function isn't declared as an advanced function (which requires a- [CmdletBinding()]attribute above a- param(...)block and/or at least one parameter with an- [Parameter(...)]attribute - see about_Functions_Advanced), so the parameter will have no effect.
 
- Even if it did take effect, which means that PowerShell translates it into a function-local - $VerbosePreferencevariable with value- 'Continue', the- ForEach-Object -Parallelblock would not see that variable, because the- $using:scope is needed to reference variable values from the caller's scope; see this answer.
 
To put it all together.
function Write-Test {
  # Mark the function as an advanced one, so that it accepts 
  # common parameters such as -Verbose
  [CmdletBinding()]
  param()
  
  # WORKAROUND: Turn the information stream on 
  #             via its *preference variable* AS WELL:
  $InformationPreference = 'Continue'
  
  1..1 | ForEach-Object -Parallel {
    Write-Host "host"
    Write-Output "Output"
    Write-Information "information" -InformationAction Continue               
    Write-Verbose "verbose" -Verbose:($using:VerbosePreference -eq 'Continue')
    Write-Warning "Warning"
    Write-Error "error"       
  }
}
  
Write-Test -Verbose
Note the expression passed to the -Verbose switch, of necessity separated from the switch name with : - -Verbose:($using:VerbosePreference -eq 'Continue') - which in effect only turns on verbose output if the $VerbosePreference value in the function's main thread ($using:) is set to 'Continue', which in turn happens when -Verbose is passed to the advanced function from the outside (it would also happen if $VerbosePreference were set to 'Continue' in the caller's scope, due to PowerShell's dynamic scoping; see this answer).
General information about PowerShell output streams:
- Both - Write-Verboseand- Write-Informationare silent by default, as is- Write-Debug.
 
- You can make their output show in one of two ways: - 
- Per-command, via a common parameter: Add - -Verboseto a- Write-Verbosecall and- InformationAction Continueto a- Write-Informationcall (as you've done).
 
- Scope-wide, via preference variables: set - $VerbosePreference = 'Continue'and- $InformationPreference = 'Continue'- but the caveat is that neither functions that live in (other) modules nor code that runs in a different thread or process sees these variables by default:
 - 
- In the module case, you must either use common parameters explicitly or set the preference variable in the global scope, which is not advisable; the problem is discussed in GitHub issue #4568.
- In the other thread/process case, the $using:scope is required, as shown above.
 
 
See about_Redirection, about_CommonParameters,  and about_Preference_Variables