Write-Host не может проанализировать свойство переменной
Это довольно странно, что Write-Host
похоже, не разбирает свойство переменной.
PS C:\Users\x> $v=@{item1="kkk";item2="aaa"}
PS C:\Users\x> $v.Keys|%{$v.Item($_)}
kkk
aaa
PS C:\Users\x> Write-Host "$v.Count elements"
System.Collections.Hashtable.Count elements
PS C:\Users\x> $v.Count
2
PS C:\Users\x> $v
Name Value
---- -----
item1 kkk
item2 aaa
Вы могли видеть, $v
это хеш-таблица и
$v.Count
печатает 2. Но почему
Write-Host "$v.Count"
распечатывать System.Collections.Hashtable.Count
? Это не то, что я ожидал.
1 ответ
Текстовое представление $v
является System.Collections.Hashtable
([string]$v
или же "$v"
). А также "$v.Count elements"
средства {text representation of $v}.Count elements
не {text representation of $v.Count} elements
так что для меня ожидается, что вы получите System.Collections.Hashtable.Count elements
в результате.
Write-Host
не несет ответственности за расширение строк в двойных кавычках. Это делается PowerShell до его вызова Write-Host
,
"$v.Count"
отпечатки 2
Для меня это печатает System.Collections.Hashtable.Count
, 2
напечатано $v.Count
не "$v.Count"
,
Вы должны использовать "$($v.Count) elements"
чтобы получить ожидаемый результат.