Возникли проблемы с использованием нескольких фильтров для команды Get-ADComputers

#powershell

#powershell

Вопрос:

Я пытаюсь заставить несколько фильтров работать, получая список компьютеров пользователей. Мои условия таковы:

  • входили в систему в течение последних 30 дней
  • исключая любой сервер, работающий
  • системы, исключающие серверы, начинающиеся с «Rose»
  • не отключены

Кажется, это работает, отфильтровывая все, кроме имен компьютеров, которые начинаются с «Rose». Формат одинаков для всех условий. В $ time уже загружена get-date.adddays(-30). Вот мой 1-лайнер:

 Get-adcomputer -filter "OperatingSystem -notlike '*server*'" -properties * |Where-Object {$_.LastLogonDate -gt $time -and ($_.Enabled -eq $true) -and ($_.name -ne 'Rose*')} |select name,lastlogondate,PrimaryGroup |Export-Csv C:Users.csv
  

Я попытался загрузить свойство -filter с моими условиями, но я не смог заставить работать более 1 фильтра, поэтому я переместил их в раздел where-object.

Комментарии:

1. Вам нужно использовать -like или -match , если вы хотите использовать подстановочные знаки.

2. Мне нужно было использовать -notlike, но да, это была проблема. Спасибо! Сделайте это ответом, а не комментарием, чтобы я мог пометить его как ответ.

3. О, да, вы правы ^^ рад, что смог помочь

Ответ №1:

Оператор -ne не поддерживает подстановочные знаки. Со страницы справки about_operators:

Операторы сравнения также включают операторы, которые находят или заменяют шаблоны в тексте. Операторы (-match, -notmatch, -replace) используют регулярные выражения, а (-like, -notlike) — подстановочные знаки *.

Вместо этого вы должны иметь возможность использовать -notlike or -notmatch .