none
Имя "if" не распознано как имя командлета, функции - говорит powershell, что не так? RRS feed

  • Вопрос

  • Имя "if" не распознано как имя командлета, функции - говорит powershell. Вот сам скрипт: "powershell -command {gwmi win32_networkadapter | if (PhysicalAdapter = True) | fl name, PhysicalAdapter, MACAddress, Speed}". Что не так делаю?

    17 октября 2012 г. 9:34

Ответы

  • 1) Можно исключить If и использовать Filter

    powershell -command "&{gwmi win32_networkadapter -filter """PhysicalAdapter = 'True'""" | fl name, PhysicalAdapter,MAcdress, Speed}"

    2) Либо вместо if использовать командлет Where-Object

    gwmi win32_networkadapter | Where {$_.PhysicalAdapter} | fl name, PhysicalAdapter, MACAddress, Speed

    • Помечено в качестве ответа smv0647 17 октября 2012 г. 9:50
    17 октября 2012 г. 9:42
    Отвечающий
  • Да, такая конструкция работает. Спасибо. А можете сказать, в двух словах, почему он "if" не захотел распозновать? На будующее, для общего развития.

    И как мне значение "Speed" поделить на "1000000000",  а то при выводе на экран от нулей в глазах рябит.))

    If это ключевое слово,а не командлет,поэтому в конвеере работать не может.

    fl name,PhysicalAdapter, MACAddress, @{n="Speed";e={$_.Speed / 1e9}}

    • Помечено в качестве ответа smv0647 17 октября 2012 г. 11:38
    17 октября 2012 г. 10:12
    Отвечающий
  • Спасибо, а что такое "Недопустимый ключ"? А то  при смене "n" и "е" на другие буквы выдаётся сообщение  "Недопустимый ключ",  "get-help * | where {$_.Synopsis -like "*Недопустимый ключ*"}" по этому поводу хранит молчание.

    И как выпоняется округление до такого-то знака после запятой в этой конструкции @{n="FreeSpace";e={$_.FreeSpace / 1gb}}? Это вывод свободного места на HDD. Хвост не красивый :))

    -- Name (или Label) <строка>
    -- Expression <строка> или <блок скрипта>
    -- FormatString <строка>

    Поэтому либо n(Name),либо l(Label),другого не дано.

    "{0:n2}" -f ($_.FreeSpace / 1gb) -округлить то 2-го знака.

    • Помечено в качестве ответа smv0647 17 октября 2012 г. 11:39
    17 октября 2012 г. 11:22
    Отвечающий

Все ответы

  • 1) Можно исключить If и использовать Filter

    powershell -command "&{gwmi win32_networkadapter -filter """PhysicalAdapter = 'True'""" | fl name, PhysicalAdapter,MAcdress, Speed}"

    2) Либо вместо if использовать командлет Where-Object

    gwmi win32_networkadapter | Where {$_.PhysicalAdapter} | fl name, PhysicalAdapter, MACAddress, Speed

    • Помечено в качестве ответа smv0647 17 октября 2012 г. 9:50
    17 октября 2012 г. 9:42
    Отвечающий
  • Да, такая конструкция работает. Спасибо. А можете сказать, в двух словах, почему он "if" не захотел распозновать? На будующее, для общего развития.

    И как мне значение "Speed" поделить на "1000000000",  а то при выводе на экран от нулей в глазах рябит.))

    17 октября 2012 г. 10:04
  • Да, такая конструкция работает. Спасибо. А можете сказать, в двух словах, почему он "if" не захотел распозновать? На будующее, для общего развития.

    И как мне значение "Speed" поделить на "1000000000",  а то при выводе на экран от нулей в глазах рябит.))

    If это ключевое слово,а не командлет,поэтому в конвеере работать не может.

    fl name,PhysicalAdapter, MACAddress, @{n="Speed";e={$_.Speed / 1e9}}

    • Помечено в качестве ответа smv0647 17 октября 2012 г. 11:38
    17 октября 2012 г. 10:12
    Отвечающий
  • Спасибо, а что такое "Недопустимый ключ"? А то  при смене "n" и "е" на другие буквы выдаётся сообщение  "Недопустимый ключ",  "get-help * | where {$_.Synopsis -like "*Недопустимый ключ*"}" по этому поводу хранит молчание.

    И как выпоняется округление до такого-то знака после запятой в этой конструкции @{n="FreeSpace";e={$_.FreeSpace / 1gb}}? Это вывод свободного места на HDD. Хвост не красивый :))

    • Изменено smv0647 17 октября 2012 г. 11:14
    17 октября 2012 г. 10:55
  • Спасибо, а что такое "Недопустимый ключ"? А то  при смене "n" и "е" на другие буквы выдаётся сообщение  "Недопустимый ключ",  "get-help * | where {$_.Synopsis -like "*Недопустимый ключ*"}" по этому поводу хранит молчание.

    И как выпоняется округление до такого-то знака после запятой в этой конструкции @{n="FreeSpace";e={$_.FreeSpace / 1gb}}? Это вывод свободного места на HDD. Хвост не красивый :))

    -- Name (или Label) <строка>
    -- Expression <строка> или <блок скрипта>
    -- FormatString <строка>

    Поэтому либо n(Name),либо l(Label),другого не дано.

    "{0:n2}" -f ($_.FreeSpace / 1gb) -округлить то 2-го знака.

    • Помечено в качестве ответа smv0647 17 октября 2012 г. 11:39
    17 октября 2012 г. 11:22
    Отвечающий