2015-08-24 3 views
0

Я узнал, что с помощью '$?' в powershell сообщает пользователю, была ли предыдущая команда успешной в ее выполнении или нет, напечатав «True» или «False».

Запрос на помощь/разъяснения по следующим вопросам пожалуйста:

Прежде всего, я хочу, чтобы подтвердить, действительно ли то, что я говорил в первом пункте верно.

Во-вторых, если это возможно, официальная документация по этой команде будет приветствоваться.

В-третьих, если я неправильно заявил об утилите '$?' команду в powershell, тогда я хотел бы знать, какова ее фактическая полезность.

+2

см. [Get-help about_automatic_variable] (https://technet.microsoft.com/en-us/library/hh847768.aspx?f=255&MSPPError=-2147217396) –

ответ

1
  1. Да, это правда.

  2. @Kayasax предоставил вам официальное документ из technet.microsoft.com

Попробуйте самостоятельно: enter image description here

Example (credits to yonglianglee):

? (знак доллара + знак вопроса) Возвращает значение True или False , указывающее, закончилась ли предыдущая команда с ошибкой. Для некоторой причины причина не устраняет все ошибки, но большую часть времени она работает.

Задача 1: посмотреть, существует ли в системе командлет powershell. Код.

SomeCmdLet #does not exists 
$? 
$? 

Выход

The term 'SomeCmdLet' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the 
spelling of the name, or if a path was included, verify that the path is correct and try again. 
At line:1 char:15 
+ SomeCmdLet <<<< #does not exists 
+ CategoryInfo   : ObjectNotFound: (SomeCmdLet:String) [], CommandNotFoundException 
+ FullyQualifiedErrorId : CommandNotFoundException 
False #error occured - previous cmdlet (SomeCmdLet) was not found 
True  #no errors returned by the previous command ($?) 

Задача 2: Смотрите, если в системе класс WMI существует

gwmi win32_processo -ErrorAction SilentlyContinue #intentional error, win32_processor is the right one 
$? 
$? 

Выход:

False 
True 
Смежные вопросы