2015-08-20 5 views
7

В сценарии я был показан сегодня был линия:

If ($?) { 
#do some stuff 
} 

Я никогда не видел знак доллара знак вопроса псевдоним $? до и не могу установить через Google, для чего это необходимо.

Когда я запускаю его в окне powershell, он обычно возвращает True, однако иногда возвращает False. Мое тестирование показало, что оно возвращает False, когда предшествующий ему код выполняется в ошибке (и в контексте сценария, который я видел в этом может иметь смысл), так что это, возможно, альтернативный способ обработки TRY .. CATCH сценарий.

Пример:

PS C:\Users\me> $? 
True 
PS C:\Users\me> $? 
True 
PS C:\Users\me> blah 
blah : The term 'blah' 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:1 
+ blah 
+ ~~~~ 
+ CategoryInfo   : ObjectNotFound: (blah:String) [],   CommandNotFoundException 
+ FullyQualifiedErrorId : CommandNotFoundException 

PS C:\Users\me> $? 
False 
PS C:\Users\me> $? 
True 

Может кто-нибудь проверить для меня, если это так, или если он служит какой-либо другой цели?

ответ

11

От about_automatic_variables:

$?
Содержит статус выполнения последней операции. Он содержит ИСТИНА, если последняя операция выполнена успешно, и FALSE, если она не удалась.

Get-Help about_automatic_variables 
+0

Спасибо за этот пост Ansgar – Jimbo

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