PowerShell: функция интерполяции - PullRequest
3 голосов
/ 08 февраля 2011

Я новичок в PowerShell.По какой причине нужно использовать $(), чтобы получить Write-Host для оценки этой функции?

Я не смог найти причину этого в документации.

PS C:\Temp> Write-Host [math]::round($diff.TotalMinutes, 2)
[math]::round 751681,102679735 2

___________________________________________________________________________________________________________

PS C:\Temp> Write-Host $([math]::round($diff.TotalMinutes, 2))
751681,1

1 Ответ

4 голосов
/ 08 февраля 2011

Вы можете удалить знак доллара и использовать только

Write-Host ([math]::round($diff.TotalMinutes, 2))

. Для парсера нужны скобки, чтобы сначала вычислить выражение, а затем привязать его к параметру -Object.Существуют некоторые правила, когда синтаксический анализатор ожидает, что строка будет выражением, и когда он обрабатывает ее как строку и передает ее команде без оценки.Дополнительную информацию можно найти в PowerShell в действии .

Знак доллара необходим, если есть другие выражения, разделенные ;

Write-Host $(get-date; 1; "test")
...