none
Powershell: Отключить вывод информации на экран командлетом New-Item RRS feed

  • Вопрос

  • Командлет New-Item после своего выполнения выводит некую информацию о созданном объекте. Хотелось бы, чтобы этот командлет вообще ничего не выводил на экран

    Пока нашёл один смешной и тупой способ: $c = New-Item $path -ItemType $Type -Force. Тогда на экране ничего не отображается. Но создавать лишнюю переменную - это не есть хорошо. Должен быть какой-то другой способ. Искал среди параметров камандлета тот, который бы отключил вывод на экран, но нефига не нашёл. =( Так что не знаю...

    22 января 2013 г. 9:52

Ответы

  • New-Item $path -ItemType $Type -Force | Out-Null
    • Помечено в качестве ответа Lich130387 22 января 2013 г. 11:06
    22 января 2013 г. 10:04
    Отвечающий
  • [void](New-Item $path -ItemType $Type -Force)

    • Помечено в качестве ответа KazunEditor 22 января 2013 г. 11:14
    22 января 2013 г. 10:16
    Модератор
  • Кстати, да, проверил в PS 2.0. он там есть. но что насчёт первого вопроса: [void](New-Item $path -ItemType $Type -Force) даст мне то же самое?

     По времени быстрее [void], > $null ,но возможно затрудняет чтение,а где-то упрощает.Так в основном тоже самое.
    • Помечено в качестве ответа Lich130387 23 января 2013 г. 2:20
    22 января 2013 г. 11:12
    Отвечающий

Все ответы

  • New-Item $path -ItemType $Type -Force | Out-Null
    • Помечено в качестве ответа Lich130387 22 января 2013 г. 11:06
    22 января 2013 г. 10:04
    Отвечающий
  • [void](New-Item $path -ItemType $Type -Force)

    • Помечено в качестве ответа KazunEditor 22 января 2013 г. 11:14
    22 января 2013 г. 10:16
    Модератор
  • Оба варианты равнозначны?

    (кстати, примерно так и думал, что надо выводить null или присваивать выводу null, но не знал, как это можно сделать в пауэршелле)

    Ещё: А Out-Null - это командлет PS 3? Просто пока я ориентируюсь на PS 2.0.
    • Изменено Lich130387 22 января 2013 г. 11:02
    22 января 2013 г. 10:59
  • Оба варианты равнозначны?

    (кстати, примерно так и думал, что надо выводить null или присваивать выводу null, но не знал, как это можно сделать в пауэршелле)

    Ещё: А Out-Null - это командлет PS 3? Просто пока я ориентируюсь на PS 2.0.

    Нет,начиная с версии 1.
    22 января 2013 г. 11:05
    Отвечающий
  • Кстати, да, проверил в PS 2.0. он там есть. но что насчёт первого вопроса: [void](New-Item $path -ItemType $Type -Force) даст мне то же самое?
    22 января 2013 г. 11:07
  • Кстати, да, проверил в PS 2.0. он там есть. но что насчёт первого вопроса: [void](New-Item $path -ItemType $Type -Force) даст мне то же самое?

     По времени быстрее [void], > $null ,но возможно затрудняет чтение,а где-то упрощает.Так в основном тоже самое.
    • Помечено в качестве ответа Lich130387 23 января 2013 г. 2:20
    22 января 2013 г. 11:12
    Отвечающий
  • Вопрос по пустому выводу:

    add-type -assembly system.windows.forms
    [System.Windows.Forms.MessageBox]::Show((ipconfig | Select-String ipv4)-join"`n", "My IP")
    

    Вместе с месэджбоксом появляется окно PoSh. Как убрать окно, оставив только msgbox?

    22 января 2013 г. 11:47
  • Вопрос по пустому выводу:

    add-type -assembly system.windows.forms
    [System.Windows.Forms.MessageBox]::Show((ipconfig | Select-String ipv4)-join"`n", "My IP")

    Вместе с месэджбоксом появляется окно PoSh. Как убрать окно, оставив только msgbox?

    Для начала создать vbs скрипт:

    scriptName = "powershell -noprofile -nologo C:\myscript.ps1" 
    set shell = wscript.createobject("wscript.shell")
    shell.run scriptName,0,false

    И в C:\myscript.ps1:

    add-type -assembly system.windows.forms
    [System.Windows.Forms.MessageBox]::Show((ipconfig | Select-String ipv4)-join"`n", "My IP")

    Запускать соотвественно vbs.
    • Изменено KazunEditor 22 января 2013 г. 12:04
    22 января 2013 г. 12:04
    Отвечающий
  • Недавно заинтересовался PoSh. vbs - даже не знаю, как с ним работать.

    А чисто PoSh' ем нельзя это сделать?

    22 января 2013 г. 12:07
  • powershell -windowstyle hidden -command "&{add-type -assembly system.windows.forms;[System.Windows.Forms.MessageBox]::Show((ipconfig | Select-String ipv4)-join'`n', 'My IP')}"

    22 января 2013 г. 12:44
    Отвечающий
  • `n должно быть в двойных кавычках, иначе не будет рассматриваться как escape последовательность для перевода строки.
    23 января 2013 г. 5:08
  • `n должно быть в двойных кавычках, иначе не будет рассматриваться как escape последовательность для перевода строки.

    Верное замечание,если запускать из cmd,Выполнить и т.д,но не из PowerShell,там парсинг работает корректно.

    Версия с двойными кавычками:

    powershell -windowstyle hidden -command "&{add-type -assembly system.windows.forms;[System.Windows.Forms.MessageBox]::Show((ipconfig  | Select-String ipv4)-join """`n""", 'My IP')}"

    23 января 2013 г. 5:30
    Отвечающий
  • А если в коде более одной строки, надо перед каждой указывать или один раз для всего кода?
    25 января 2013 г. 6:50
  • А если в коде более одной строки, надо перед каждой указывать или один раз для всего кода?

    Использовать вместо -command ,-file C:\Myscript.ps1
    25 января 2013 г. 7:12
    Отвечающий
  • Т.е. сценарий запускается из командной строки (cmd)?
    25 января 2013 г. 11:55