Пустая строка не равна $null
и не равна ни одного пробела " "
.Это равно ""
, ''
или [String]::Empty
.Тем не менее, обычно лучше использовать функцию [String]::IsEmptyOrWhitespace()
для такого рода вещей, поскольку она охватывает больше угловых случаев, например, когда столбец равен null, либо один пробел, либо пустая строка.
Вы также импортируете весь CSV в каждом цикле.Это пустая трата усилий, потому что весь файл должен обрабатываться на каждой итерации.
Попробуйте что-то вроде этого:
$Columns = 1..12 | ForEach-Object { "access$_" }
$Access = Import-Csv 'C:\import.csv'
foreach ($Column in $Columns) {
$Access |
Where-Object { -not [String]::IsNullOrWhiteSpace($_.$Column) } |
Select-Object -Property crednum |
Export-Csv -LiteralPath ($outpath + $Column + ".csv") -NoTypeInformation
}