script - ¿Qué es `$?` En Powershell?
powershell force delete folder (2)
Devuelve true
si el último comando fue exitoso, de lo contrario es false
.
Sin embargo, hay una serie de advertencias y comportamiento no obvio (por ejemplo, qué significa exactamente "éxito"). Recomiendo leer este artículo para un tratamiento más completo.
Por ejemplo, considere llamar a Get-ChildItem.
PS> Get-ChildItem
PS> $?
True
ps devolverá True
cuando la llamada a Get-ChildItem sea exitosa.
Sin embargo, si llama a Get-ChildItem en un directorio que no existe, devolverá un error.
PS> Get-ChildItem /Some/Directory/Which/Does/Not/Exist
Get-ChildItem : Cannot find path ''C:/Some/Directory/Which/Does/Not/Exist'' because it does not exist.
PS> $?
False
ps devolverá False
aquí, ya que el comando anterior no fue exitoso.
¿Cuál es el significado de $?
en Powershell?
Editar: TechNet responde en tautología, sin explicar qué significa "triunfar" o "fallar".
ps
Contiene el estado de ejecución de la última operación. Contiene TRUE si la última operación fue exitosa y FALSE si falló.
Supuse $? simplemente probaría si $ LastExitCode es 0, pero encontré un ejemplo de contador donde $? es falso pero $ LastExitCode es verdadero.
$?
contendrá $false
si el último comando resultó en un error. Contendrá $true
si no fuera así. En los días de PowerShell v1 , esta era una forma común de manejar errores. Por ejemplo, en un script, si desea verificar la existencia de un archivo y luego imprimir un mensaje personalizado si no fuera así, podría hacer lo siguiente:
Get-Item -Path john -ErrorAction silentlycontinue;
if( -not $?)
{
''could not find file.'';
exit
}`