-не $ ноль не будет работать - PullRequest
0 голосов
/ 09 мая 2018

Я работаю в PowerShell с CSV с 13 увеличенными столбцами «access1, access2, ..», и я пытаюсь пройтись и экспортировать «crednum» из каждой строки, где столбец доступа не пустой, с новый CSV для каждого столбца. Я пробовал (-ne $null) и (-ne " ") оба просто дать мне все содержимое столбца crednum, и я понятия не имею, что я делаю неправильно.

$a = 1

do {
    $column = ("access" + $a)
    $outpath = "C:\Test\" 

    $access = Import-Csv 'C:\import.csv' |
              where {$_.$column -ne " "} |
              select crednum

    $a

    $access | Export-Csv ($outpath + $column + ".csv") -NoTypeInformation

    $a++
} while ($a -le 13)

1 Ответ

0 голосов
/ 09 мая 2018

Пустая строка не равна $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
}
...