Я выяснил, что оператор формата работает по-разному внутри функции по сравнению с простым сценарием. Вот простой пример того, что работает, как ожидалось:Оператор формата Powershell внутри функции
[string]$name = 'Scripting Guy'
[string]$statement = 'PowerShell rocks'
$s = "The {0} thinks that {1}!" -f $name, $statement
write-host $s
производства:
The Scripting Guy thinks that PowerShell rocks!
В то время как внутри функции он делает что-то другое:
function myFunc([string] $iname, [string] $istatement) {
$s = "The {0} thinks that {1}!" -f $iname, $istatement
write-host $s
}
[string]$name = 'Scripting Guy'
[string]$statement = 'PowerShell rocks'
myFunc($name, $statement)
производит:
The Scripting Guy PowerShell rocks thinks that !
Я пытался играть с ним, чтобы узнать, что он делает:
function myFunc([string] $iname, [string] $istatement) {
$s = "The {0} thinks that {1}! {2} {3}" -f $iname, $istatement, "=====", $iname
write-host $s
}
[string]$name = 'Scripting Guy'
[string]$statement = 'PowerShell rocks'
myFunc($name, $statement)
Это дает:
The Scripting Guy PowerShell rocks thinks that ! ===== Scripting Guy PowerShell rocks
Так что теперь я не знаю, что думать об этом.