Какого черта продолжает этот AD, просачиваются PowerShell?

Я думаю, что это - плохая идея, почему предельные экземпляры, WL разработан для балансировки потоков через несколько экземпляров и несколько ядер. Если Вы действительно хотите соединить экземпляры проводами, затем просто ставит каждого в отдельном домене - но я все еще думаю, что это - плохая идея. Что, если экземпляр 1 мог бы действительно использовать 5-е ядро и экземпляр 2, находится, ничего не делая?

9
задан 13 April 2017 в 15:13
2 ответа

Ключевое различие между ними в том, что первая команда не включает прямого сравнения значений для получения всех результатов, а вторая команда делает. Первая команда включает результаты NULL, а вторая - нет (как уже обнаружил MDMarra). Обе команды начинаются с этого командлета:

get-aduser

Проходя нижеприведенное, помните, что результаты этого командлета включают всех пользователей AD независимо от чего-либо еще в параметре -filter после него.

Теперь давайте разбить две разные части. Первый:

{-not (description -eq "auto")}

... означает

  1. "выяснить, где атрибут описания равен тексту строка "авто". Чтобы это сравнение работало, должна существовать строка в поле описания для оператора -eq , чтобы можно было его сравнить на "авто". Значения NULL исключаются из этого сравнения, поскольку оно не может сравнивать NULL со строковым значением.
  2. независимо от параметра фильтра -eq дает мне ВСЕ, что НЕ является результатом ] (description -eq "auto") , который будет включать NULL, поскольку исходный командлет, get-aduser , включает всех пользователей AD. Ему не нужно было ничего сравнивать ни с чем другим с оператором -not . Он просто дал вам все, кроме результатов фильтра (description -eq "auto") .

В вашем примере предположим, что у вас есть 1 пользователь AD, описание которого равно "auto", несколько сотен с чем-то отличным от "auto" и несколько сотен с описанием NULL. равно "auto" - в результате будет 1 пользователь

  • Дайте мне всех пользователей AD, которые НЕ являются тем, что вы мне только что дали - результат - несколько сотен с чем-то еще И несколько сотен которые имеют NULL.
  • Поскольку при использовании оператора -not не нужно было сравнивать что-либо с чем-либо другим, результат включал NULL-описание пользователей, которые были записаны в исходном get-aduser командлет.

    Вторая команда:

    {description -ne "auto"}
    

    ... означает

    1. «выяснить, где атрибут описания не соответствует точной строке« auto ». Опять же, для этого сравнения чтобы работать, строка должна существовать в поле описания для оператора -ne , чтобы можно было его сравнить на "авто". Значения NULL исключаются из этого сравнения, поскольку оно не может сравнивать NULL со строковым значением.

    В вашем примере снова предположим, что у вас есть 1 пользователь AD, описание которого равно «auto», несколько сотен с чем-то другим, кроме "auto" и несколько сотен с NULL-описаниями. Пройдя через логику команды, он сделает:

    1. Дайте мне всех пользователей AD, у которых описание не равно «auto» - в результате у нескольких сотен пользователей в описании будет что-то иное, кроме «auto». Он не привлекает пользователей с описанием NULL, потому что он не может сравнить NULL с текстовой строкой.

    В любом случае вся разница между двумя командами определенно не интуитивно понятна.

    Используя эту команду, вы должны быть в состоянии поймать NULL с помощью "-and", вот так:

    {description -ne "auto" -and description -ne $NULL}
    

    Я не на 100% разбираюсь в синтаксисе, так как не могу проверить его прямо сейчас, и, вероятно, есть способ сделать это лучше, чем это тоже. Когда все это разбито, это довольно антиклиматично, и для объяснения потребовалось много набора текста, но я сталкивался с такими странными вещами, прежде чем использовать различные операторы, и много проб и ошибок, так как я никогда не могу вспомнить все предостережения которые используются вместе с каждым из них.

    Ссылка: http://technet.microsoft.com/en-us/library/hh847732.aspx : значения и условия испытаний. Например, вы можете сравнить две строки значения, чтобы определить, равны ли они.

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

    Они также включают побитовые операторы (-bAND, -bOR, -bXOR, -bNOT) для манипулировать битовыми шаблонами в значениях.

    Для получения дополнительной информации см. about_Comparison_Operators

    Логические операторы

    Используйте логические операторы (-and, -or, -xor, -not,!) для соединения условных операторов в один комплекс условный . За Например, вы можете использовать логический оператор -and для создания объекта фильтр с двумя различными условиями.

    Для получения дополнительной информации см. about_Logical_Operators.

    4
    ответ дан 2 December 2019 в 22:37

    Добавление к этому старому вопросу, возникающему при поиске:

    Использование -Filter с отрицательным соответствием, например -ne или -notlike, исключает результаты с пустыми нулевые значения. Чтобы они были включены, вам также необходимо явно сопоставить, используя -notlike '*' as -eq '' и -eq $ NULL не являются допустимыми фильтрами. Обратите внимание, что это причуда с -Filter, использующая прямое -LdapFilter ОТРИЦАТЕЛЬНО соответствует пустым значениям.

    Вот пример множественного совпадения с фильтром и LdapFilter с отрицательными значениями:

    Get-ADUser -Filter { mail -like '*example*' -and (description -ne 'example' -or description -notlike '*') }
    
    Get-ADUser -LdapFilter '(&(mail=*example*)(!description=example))'
    
    0
    ответ дан 2 December 2019 в 22:37

    Теги

    Похожие вопросы