#powershell
#powershell
Вопрос:
Использование Write-Host в подвыражении $() всегда выводит в начало строки, независимо от ее позиции.
Например:
"This is $(Write-Host 'now at the beginning' -NoNewline)"
Выводит:
now at the beginningThis is
Другие командлеты работают здесь, как и ожидалось (например "Today is $((Get-Date).DayOfWeek)"
, Today is Friday
).
Чем отличается Write-Host ?
Комментарии:
1.
Write-Host
записать строку в host и ничего не возвращать.
Ответ №1:
Он не «выводит в начало строки», он записывает на хост дважды, в обратном порядке.
"abc $()"
это строковый литерал, который включает подвыражение.- Вычисление того, что представляет собой строка, означает оценку
$()
- Оценка
$()
записи на экранnow at the beginning
и ничего не возвращает - Теперь строковый литерал
"abc"
- Теперь
"abc"
записывается на экранnow at the beginningabc
Это не то, что вы предлагаете:
"abc $(write-host 'hi')"
"hiabc"
- запись на экран.