none
Исключить $null RRS feed

  • Вопрос

  • Всем добрый день!

    Часто сталкиваюсь с вопросом, требуется исключить из массива данные с $null

    Не понимаю зависимости,

    иногда приходится писать так 

    $_.ComputerName -ne ""


    Иногда так,

    $_.ComputerName -ne $null

    ,

    $_.ComputerName -notlike $null

    Приходится вписывать все сразу вида

    $PC | ? {if(($_.ComputerName -ne $null)-or($_.ComputerName -notlike $null)-or($_.ComputerName -ne ''')-or($_ -ne "")){$_}}

    Есть способ, указывать не множественные значения

    $_.ComputerName -ne "$nul|1|2|3"

    А множественные операторы -ne|-notlike и единственное значение $null

    18 апреля 2018 г. 9:52

Ответы

  • (! ([string]::IsNulloeEmpty($_.Computername))

    Для всяких проверок можно использовать эту конструкцию

    А вообще "" -eq $Null вернет вам $false потому что это разные значения и получаются они в разных ситуациях. Например если обьект существует и у него есть параметр без значения с названием Computername - этот параметр будет равен "" и не равен $Null, а вот если $PC пустое - то $_.Computername или такого свойства нет, то проверка будет работать в акурат наоборот

    Для множественных проверок можно использовать операторы Match или Contains, в зависимости от ситуации. Напрме:

    $a = 1
    if ($a -match '1|2'){'a = 1 or 2'}
    elseif ($a -match '(ABC)|(DEF)'){'a = ABC or DEF'}
    else {'a <> 1, 2, ABC, DEF'}


    The opinion expressed by me is not an official position of Microsoft

    • Изменено Vector BCOModerator 18 апреля 2018 г. 10:07
    • Помечено в качестве ответа SharpQ 18 апреля 2018 г. 10:11
    18 апреля 2018 г. 10:02
    Модератор

Все ответы

  • (! ([string]::IsNulloeEmpty($_.Computername))

    Для всяких проверок можно использовать эту конструкцию

    А вообще "" -eq $Null вернет вам $false потому что это разные значения и получаются они в разных ситуациях. Например если обьект существует и у него есть параметр без значения с названием Computername - этот параметр будет равен "" и не равен $Null, а вот если $PC пустое - то $_.Computername или такого свойства нет, то проверка будет работать в акурат наоборот

    Для множественных проверок можно использовать операторы Match или Contains, в зависимости от ситуации. Напрме:

    $a = 1
    if ($a -match '1|2'){'a = 1 or 2'}
    elseif ($a -match '(ABC)|(DEF)'){'a = ABC or DEF'}
    else {'a <> 1, 2, ABC, DEF'}


    The opinion expressed by me is not an official position of Microsoft

    • Изменено Vector BCOModerator 18 апреля 2018 г. 10:07
    • Помечено в качестве ответа SharpQ 18 апреля 2018 г. 10:11
    18 апреля 2018 г. 10:02
    Модератор
  • Большое спасибо за наводку и объяснение!

    Получилось

    (!([string]::IsNullOrWhiteSpace($_.Computername))


    • Изменено SharpQ 18 апреля 2018 г. 10:12
    18 апреля 2018 г. 10:11