Get-WebAppPoolState не возвращает строку, а объект типа CodeProperty.Вам понадобится свойство Value для этого объекта, то есть:
$state = (Get-WebAppPoolState AppPoolName).Value;
Я предполагаю, что какой-то преобразователь экрана запускается в первом случае, когда он записывается в вывод, поэтому отображается Stopped, но не для записи вhost, так что вместо этого вы получаете представление объекта по умолчанию (которое является именем типа).