Переменная содержит предыдущее значение, даже если назначено новое значение - PullRequest
0 голосов
/ 19 февраля 2019

Я, вероятно, упускаю что-то простое, но ...

Мой код:

$BusinessUnits = @()
$Animal = 'DOG'

if (-not $BusinessUnits -contains $Animal) {
    $Animal + " NOT FOUND. ADDING"
    $BusinessUnits += $Animal
} else {
    $Animal + " FOUND"
}

$Animal = 'Mouse'
if (-not $BusinessUnits -Contains $Animal) {
    $Animal + " NOT FOUND. ADDING"
    $BusinessUnits += $Animal
} else {
    $Animal + " FOUND"
}
$BusinessUnits

Вышеприведенный код возвращает:

DOG NOT FOUND. ADDING
Mouse FOUND
DOG

Первый, если не находитСОБАКА так добавляет это;однако второй if находит Mouse и не добавляет ее.Мышь НЕ находится в массиве на данный момент.

Что я сделал не так?

Я пишу код для создания файла CSV как часть некоторой обработки.Значения для бизнес-единицы не будут постоянными и могут изменяться в процессе обработки.И я хочу написать строку заголовка только после добавления первой строки подробностей.

1 Ответ

0 голосов
/ 19 февраля 2019

Оператор -not имеет более высокий приоритет , чем оператор -contains, поэтому вы фактически проверяете

(-not $BusinessUnits) -contains $Animal

, а не то, что на самом деле хотите проверить

-not ($BusinessUnits -contains $Animal)

Используйте скобки (см. Выше) или оператор -notcontains, чтобы избежать этой ошибки.

$BusinessUnits -notcontains $Animal
...