Я не уверен, что это простая ошибка, ошибка или что-то еще, что мне не хватает, но я ожидаю, что следующие фрагменты кода вернут тот же результат в $files.Count
outvariable.
c:\
содержит 4 файла в моей системе.
gci c:\ -file -ov files | sort lastwritetime | select -first 2 | Out-Null
$files.Count # returns 4
gci c:\ -file | sort lastwritetime -ov files | select -first 2 | Out-Null
$files.Count # returns 2
Часть конвейера select -first 2
влияет на переменную $files
во втором примере.
Редактировать благодарность PetSerAl и JosefZ за указание мне на ответ
Sort-Object должен потреблять все входные элементы, чтобы начать сортировку, но это
не нужно писать их все на выходе. Это может остановиться, как только
Выберите объект спросите его.
(мое текущее понимание вещей) выходная переменная $files
получает свои значения из outputtream из команды sort
, и outputtream может прекратить запись, если об этом попросит следующая команда.
Этот надуманный пример показывает, что содержимое переменной $files
изменяется в зависимости от команды, следующей за
gci c:\ -file | sort -ov files | sort | select -f 1 | Out-Null;$files.count # all files
gci c:\ -file | sort -ov files | select -f 1 | Out-Null;$files.count # 1 file
$PSVersionTable
Name Value
---- -----
PSVersion 5.1.16299.967
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.16299.967
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1