Я сделал самую неудачную опечатку, которая стоила мне довольно дорогое время:
$errors.Count
Это возвращает "0
", даже если есть ошибки, потому что имя переменной должно быть сингулярным. Это работает:
$error.clear() # To ensure a correct repro
Copy-Item asdf fdsa # Will show an error
$error.Count # Will output "1"
Однако теперь я хочу знать, почему $errors.Count
дал мне что-нибудь вообще, и почему он дал мне "0
". Поэтому я продолжил некоторые тесты и получил следующие результаты:
$asdf.Count # Will output "0"
$nrOfEinsteinsInSpace.Count # Will output "0"
$a = 0; $a.Count; # Will output "1"
$b = 2; $a.Count; # Will output "1"
$x = 1,2,3; $x.Count; # Will output "3"
И собрав еще больше данных, чтобы иметь возможность задать мне разумный вопрос:
$true.Count # Will output "1"
$false.Count # Will output "1"
Итак, мы имеем следующие различные случаи:
- Array (например) переменные, где
.Count
выводит количество элементов. - несуществующие переменные, где
.Count
выводит "0". - Объявленные переменные, где
.Count
будет выводить "1". - Встроенные переменные, где
.Count
будет выводить "1".
Случаи 2, 3 и 4 не имеют для меня никакого смысла (пока). Что здесь происходит? Где это документировано? Как работает свойство .Count
?