2009-08-13 19 views
49

Puede salir de PowerShell escribiendo exit. Hasta aquí todo bien. Pero, ¿qué es esto exactamente?¿Qué es exactamente "salida" en PowerShell?

PS Home:\> gcm exit 
Get-Command : The term 'exit' is not recognized as the name of a cmdlet, function, script file, or operable program. Ch 
eck the spelling of the name, or if a path was included, verify that the path is correct and try again. 
At line:1 char:4 
+ gcm <<<< exit 
    + CategoryInfo   : ObjectNotFound: (exit:String) [Get-Command], CommandNotFoundException 
    + FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand 

Así que no es un cmdlet, función, script o programa. Deja la pregunta qué exactamente es.

Esto, desafortunadamente, también significa que no se puede crear alias para exit:

PS Home:\> New-Alias ^D exit 
PS Home:\> ^D 
Cannot resolve alias '♦' because it refers to term 'exit', which is not recognized as a cmdlet, function, operable prog 
ram, or script file. Verify the term and try again. 
At line:1 char:2 
+ ♦ <<<< 
    + CategoryInfo   : ObjectNotFound: (♦:String) [], CommandNotFoundException 
    + FullyQualifiedErrorId : AliasNotResolvedException 

¿Hay más de tales órdenes que hay comandos?

ETA: Solo como referencia: Sé que puedo simplemente envolverlo en una función. Mi perfil tiene las líneas

# exit with Ctrl+D 
iex "function $([char]4) { exit }" 

en ellas. Mi pregunta era solo para saber qué es exactamente este comando.

Respuesta

65

Es una palabra clave reservada (como return, filter, function, break).

Reference

Además, según la sección 7.6.4 de Powershell in Action de Bruce Payette:

¿Pero qué sucede cuando se desea una secuencia de comandos para salir desde dentro de una función definida en el guión? ... Para hacerlo más fácil, Powershell tiene la palabra clave de salida .

Por supuesto, como otros han señalado, no es difícil de hacer lo que quiere envolviendo la salida en una función:

PS C:\> function ex{exit} 
PS C:\> new-alias ^D ex 
+3

Según 'Get-Help Exit-PSSession' _Usted también se puede utilizar la palabra clave Salir para finalizar una sesión interactiva. El efecto es el mismo que usar Exit-PSSession._ Por lo tanto, también dice 'Exit' es una palabra clave. Sin embargo, parece que no se puede interpretar que la cita implica que 'Exit' y' Exit-PSSession' son equivalentes en todos los casos. La palabra clave exit se puede usar con un argumento que puede convertirse en '[int]', y en ese caso ese número será el código de salida. Por ejemplo 'Exit 42'. –