Sua resposta é que o tipo de retorno é nulo. Ele não retorna nada, porque a opção -WhatIf
serve para não executar nada. Ele apenas testa para ver o que o comando faria e grava essa informação para hospedar.
Write-Host
$a = Write-Host "Test string"
# Test String will output to console
# $a will be null because the output will go to the console
$a = Write-Host "Test string" | Write-Output "C:\output.txt"
# Test String will output to console
# $a will be null, and output.txt will be empty because the output will go to the console
A saída do Write-Host é enviada explicitamente para o console. Ele não poderá ser armazenado em uma variável ou canalizado para outro comando, porque é para isso que serve o fluxo de saída padrão.
Write-Output
Write-Output irá colocar informações no pipeline. De lá, ele pode ser canalizado para outro comando. Se a saída atingir um comando que não tenha sua saída canalizada para algum outro lugar, ela será armazenada em uma variável se você iniciou a linha com uma instrução $var =
. Se não for tratado neste momento, a saída será gravada no console do host.
$a = Write-Output "Test string"
# Console will be empty
# $a will contain Test string
$a = Write-Host "Test string" | Out-File "C:\output.txt"
# Console will be empty
# $a will be null, and output.txt will contain "Test String"
Referência completa do fluxo de saída: link