2016-02-03 2 views
0

Более исключением одного у меня есть эта часть моего кода:при использовании оператора матча

$exception = "VM" 

ForEach($item in $list) { 

IF ($item -match $exception) { $invalidlist += $item } 
ELSE { $validlist += $item } 

} 

который работает как intendet, когда назначается только 1 пункт переменной $exception. Проблема заключается в том, что мне нужно в переменную, чтобы содержать более одного элемента, например: $exception = "VM","TM","TMP"

Как можно искать совпадения с любой позиции в $exception?

Заранее спасибо.

EDIT: $list создаются с помощью:

$list = Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan 548.00:00:00

+2

изменение: 'IF ($ исключение -match $ пункта)' – Avshalom

+0

Match является оператором массива. При использовании в способе, описанном Авшалом, он возвращает все объекты, которые соответствуют. Возврат любого объекта будет оцениваться как True – Matt

+0

Это не сработает, возможно ли присвоить переменные '$ exception' (см. Выше) неправильно? – Lyux

ответ

1

Что касается обновленного комментария, ваш $list является массивом объектов AD: Предполагая, что вы заботитесь имя компьютера, Вы должны добавить свойство Имени до $item ->$item.name, как в следующем примере:

* Если вы хотите вернуть только имя компьютера, а не полный объект, добавьте $ item.name к недопустимой переменной, например $invalidlist += $item.name

$invalidlist = @() 
$validlist = @() 
$exception = "VM","TM","TMP" 
$list = Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan 548.00:00:00 

ForEach($item in $list) { 

## if the item in $exception are equal to the $item name you can use the contains operator 
## otherwise you can use -match 
IF ($exception -contains $item.name) { $invalidlist += $item } 
ELSE { $validlist += $item } 
} 
+0

логически это работает, но для моего случая это не так. Элементы, соответствующие исключениям, по-прежнему попадают в действительный список:/ – Lyux

+0

обновил ответ – Avshalom

+0

ok после дальнейшего тестирования. Я могу подтвердить, что ваш метод работает правильно, когда массив '$ list' заполняется таким же образом. My '$ list' создан этим кодом' $ list = Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan 548.00: 00: 00' Почему это не работает, когда '$ list' создается таким образом? любая идея, как исправить это? Спасибо за помощь кстати. – Lyux

Смежные вопросы