none
как остановить сценарий PowerShell RRS feed

  • Вопрос

  • Добрый день, коллеги!

    Подскажите, нигде не могу найти, как при наступлении определенного условия скрипт прекратил свою работу?

    14 февраля 2012 г. 12:34

Ответы

  • Оба варинат мне подходят, а есть ли какая то принципиальная разница между return и exit? Результат я вижу один - PowerShell прекращает свою работы на месте где встречает exit или return.

    Область видимости,возврат значения,влияние на переменную exitcode(lastexitcode) и т.д.

    Подробнее можно прочитать в справке:

    get-help about_Return

    get-help about_Language_Keywords

    • Помечено в качестве ответа SteFFun 14 февраля 2012 г. 13:45
    14 февраля 2012 г. 13:28
    Отвечающий
  • Все будет зависеть от структуры скрипта,а так: break,return,exit.

    • Помечено в качестве ответа SteFFun 14 февраля 2012 г. 13:45
    14 февраля 2012 г. 12:41
    Отвечающий
  • Суть скрипта в том что он проверяет состояние службы на удаленной машине и если она не запущена скрипт должен прекратить работу, я так понимаю это скорее всего будет exit, так?

    Тут опять же много вариантов взависимости от структуры ,можно обойтись только if или exit, и т.д.Так что тестируйте и подбирайте более удобный вариант.

    #Вариант с if
    $service = Get-Service spooler -ComputerName winpc
    if($service.Status -eq "Running"){
    	"Запущен"
    }
    else {
    	"Не запущен"
    }
    
    
    #exit
    
    if($service.Status -ne "Running"){
    	exit
    }
    
    "Я не выполнюсь если сервис остановлен"
    
    #return
    
    if($service.Status -ne "Running"){
    	return
    }
    
    "Я не выполнюсь если сервис остановлен"

    • Помечено в качестве ответа SteFFun 14 февраля 2012 г. 13:45
    14 февраля 2012 г. 13:07
    Отвечающий

Все ответы

  • Все будет зависеть от структуры скрипта,а так: break,return,exit.

    • Помечено в качестве ответа SteFFun 14 февраля 2012 г. 13:45
    14 февраля 2012 г. 12:41
    Отвечающий
  • Суть скрипта в том что он проверяет состояние службы на удаленной машине и если она не запущена скрипт должен прекратить работу, я так понимаю это скорее всего будет exit, так?
    14 февраля 2012 г. 12:59
  • Суть скрипта в том что он проверяет состояние службы на удаленной машине и если она не запущена скрипт должен прекратить работу, я так понимаю это скорее всего будет exit, так?

    Тут опять же много вариантов взависимости от структуры ,можно обойтись только if или exit, и т.д.Так что тестируйте и подбирайте более удобный вариант.

    #Вариант с if
    $service = Get-Service spooler -ComputerName winpc
    if($service.Status -eq "Running"){
    	"Запущен"
    }
    else {
    	"Не запущен"
    }
    
    
    #exit
    
    if($service.Status -ne "Running"){
    	exit
    }
    
    "Я не выполнюсь если сервис остановлен"
    
    #return
    
    if($service.Status -ne "Running"){
    	return
    }
    
    "Я не выполнюсь если сервис остановлен"

    • Помечено в качестве ответа SteFFun 14 февраля 2012 г. 13:45
    14 февраля 2012 г. 13:07
    Отвечающий
  • Оба варинат мне подходят, а есть ли какая то принципиальная разница между return и exit? Результат я вижу один - PowerShell прекращает свою работы на месте где встречает exit или return.
    14 февраля 2012 г. 13:17
  • Оба варинат мне подходят, а есть ли какая то принципиальная разница между return и exit? Результат я вижу один - PowerShell прекращает свою работы на месте где встречает exit или return.

    Область видимости,возврат значения,влияние на переменную exitcode(lastexitcode) и т.д.

    Подробнее можно прочитать в справке:

    get-help about_Return

    get-help about_Language_Keywords

    • Помечено в качестве ответа SteFFun 14 февраля 2012 г. 13:45
    14 февраля 2012 г. 13:28
    Отвечающий
  • Благодарю.
    14 февраля 2012 г. 13:45