none
powershell оптимизация двух строчек кода RRS feed

  • Вопрос

  •     $p = $ProcessList | % { if($_.path -ne $null){  if ($_.path.contains("\SkypePortable\") ) {$_}}}
        if ( $p -eq $null ) {Start-Process .\SkypePortable\skype_start.cmd -ArgumentList "/min"}

    Помогите оптимизировать

    Переписать более красиво.

    • Изменено korggrodno3 13 декабря 2015 г. 18:37
    13 декабря 2015 г. 18:35

Ответы

  • If (-not ((Get-Process).path | where {$_ -like "*SkypePortable*"}))
    
    {Start-Process .\SkypePortable\skype_start.cmd -ArgumentList "/min"}
    Можно так попробовать



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


    • Изменено Vector BCOModerator 13 декабря 2015 г. 20:48
    • Помечено в качестве ответа korggrodno3 14 декабря 2015 г. 3:10
    13 декабря 2015 г. 20:47
    Модератор

Все ответы

  • Не определен $ProcessList

    Что нужно на выходе получить, какова задача?

    И в  $P что идет выполнением в последнем if? Если путь запуска процесса содержит \SkypePortable\ то запустить $_, то же самое получается. Абсурд, процесс же запущен уже =/


    • Изменено NTLose 13 декабря 2015 г. 19:34
    13 декабря 2015 г. 19:15
  • If (-not ((Get-Process).path | where {$_ -like "*SkypePortable*"}))
    
    {Start-Process .\SkypePortable\skype_start.cmd -ArgumentList "/min"}
    Можно так попробовать



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


    • Изменено Vector BCOModerator 13 декабря 2015 г. 20:48
    • Помечено в качестве ответа korggrodno3 14 декабря 2015 г. 3:10
    13 декабря 2015 г. 20:47
    Модератор
  • Не определен $ProcessList

    Что нужно на выходе получить, какова задача?

    И в  $P что идет выполнением в последнем if? Если путь запуска процесса содержит \SkypePortable\ то запустить $_, то же самое получается. Абсурд, процесс же запущен уже =/


    насколько понял в первом случае получаем список процессов по условию SkypePortable  и в случае если таких процессов нет запускаем что то...

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

    13 декабря 2015 г. 20:50
    Модератор
  •     $p = $ProcessList | % { if($_.path -ne $null){  if ($_.path.contains("\SkypePortable\") ) {$_}}}
        if ( $p -eq $null ) {Start-Process .\SkypePortable\skype_start.cmd -ArgumentList "/min"}

    Помогите оптимизировать

    Переписать более красиво.

    Если это   if ($_.path.contains("\SkypePortable\")  правда то это if($_.path -ne $null) тем более правда (2 одинаковые проверки подряд) 

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

    13 декабря 2015 г. 20:51
    Модератор
  • Вообще странно тогда это =) Просто запускай баник и все, казалось бы. Странная проверка получается. Если есть процесс, ну есть и есть, ругнется. Если нет то запустится тупо)

    думаю посыл такой

    $ProcessList = Get-Process skype*
    if ($ProcessList) {
    foreach ($Process in $ProcessList) {
        if ($Process.path -match 'SkypePortable') {
           что то делаем 
       }
      }
     }
    else {
        Start-Process $PSScriptRoot\skype_start.cmd -ArgumentList "/min"
    }
    Это если скрипт лежит в рядом с skype_start.cmd

    • Изменено NTLose 13 декабря 2015 г. 21:44
    13 декабря 2015 г. 20:54