Как упомянуто SimonS в комментариях, вам нужно выбрать, какое выражение является -Name
а какое -Value
. В настоящее время ваше выражение для получения числа файлов XLS неявно является параметром -Name
для Set-Variable
то есть именем переменной, которую нужно установить, а содержимое $NumberOfCabinets
является данными для этой переменной. Поскольку $NumberOfCabinets
еще не был установлен, новой переменной присваивается значение null. Например, если бы было пять файлов XLS, была бы создана переменная с именем $5
было бы присвоено значение null, поскольку в выражении count указано имя переменной.
Обычно Set-Variable
требуется только в том случае, если вам нужно динамически выбирать, какую переменную устанавливать. Если вы все равно хотите его использовать, ваша команда будет выглядеть так:
Set-Variable 'NumberOfCabinets' (Get-ChildItem $filepath | where {$_.Extension -eq ".xls"} | Measure-Object).Count
Обратите внимание, что имя переменной, которую нужно установить / создать, просто передается в виде строки.
Однако, вероятно, проще установить переменную, используя стандартный оператор присваивания:
$NumberOfCabinets = (Get-ChildItem $filepath | where {$_.Extension -eq ".xls"} | Measure-Object).Count
Используя некоторые псевдонимы и тот факт, что коллекции PowerShell уже имеют свойство Count
, мы можем даже немного его сжать:
$NumberOfCabinets = (gci $filepath | ? { $_.Extension -eq '.xls' }).Count