El Blog de Gualtrysoft

Windows 2000/2003/2008, Active Directory, VBScript, Hyper-V, PowerShell y todo aquello interesante a la hora de usar, configurar y administrar Windows Server. También tenemos longanizas…

Tip PowerShell: Cómo saber la versión de PowerShell que hay en un equipo

Posted by urpiano en Lunes 27 \27\UTC febrero \27\UTC 2012

¿Queremos saber la versión de PowerShell que está instalada en el equipo? En esta entrada se explica cómo hacerlo.

Para saber la versión de Powershell que está instalada en un equipo, se debe consultar la variable integrada $PSVersionTable, que consultada desde una consola de PowerShell 2.0 mostrará esta información:

PS P:\> $PSVersionTable

Name             : ConsoleHost
Version          : 2.0
InstanceId       : bbcf34da-6f42-475c-928a-23cd3cb00c19
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : es-ES
CurrentUICulture : es-ES
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

Si la versión es la 1.0, no se obtendrá respuesta ninguna, pues esta variable sólo está incorporada en PowerShell 2.0, no así en PowerShell 1.0:

PS P:\> $PSVersionTable

PS P:\>

Se podría invocar la variable $Host, incorporada en ambas versiones, o directamente la propiedad Version de esta variable. El resultado en PowerShell 1.0 es:

PS P:\> $Host

Name             : ConsoleHost
Version          : 1.0.0.0
InstanceId       : c084dd5c-a144-4da3-bc03-e751b0760367
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : es-ES
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy

PS P:\> $Host.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
1      0      0      0

En PowerShell 2.0 el resultado es:

PS P:\> $Host

Name             : ConsoleHost
Version          : 2.0
InstanceId       : bbcf34da-6f42-475c-928a-23cd3cb00c19
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : es-ES
CurrentUICulture : es-ES
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS P:\> $Host.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1

Idéntico resultado da utilizar el Cmdlet Get-Host. Aquí se ve en PowerShell 1.0:

PS P:\> Get-Host

Name             : ConsoleHost
Version          : 1.0.0.0
InstanceId       : c084dd5c-a144-4da3-bc03-e751b0760367
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : es-ES
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy

PS P:\> (Get-Host).Version

Major  Minor  Build  Revision
-----  -----  -----  --------
1      0      0      0

Aquí se ve enPowerShell 2.0:

PS P:\> Get-Host

Name             : ConsoleHost
Version          : 2.0
InstanceId       : bbcf34da-6f42-475c-928a-23cd3cb00c19
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : es-ES
CurrentUICulture : es-ES
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS P:\> (Get-Host).Version

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1

Sin embargo, el uso de esta variable o este Cmdlet no es totalmente correcto, debido a que ninguno de los dos hace en realidad referencia a PowerShell en sí, si no al Shell que se está usando. Esto generalmente no supone ningún problema, pues coinciden las versiones de consola de PowerShell con la del propio PowerShell, pero si se está trabajando con otro Shell el valor que indicará esta variable será la versión de ese otro Shell, que no tiene porqué coincidir con la de PowerShell. Por ejemplo, si consultamos la variable $Host, o ejecutamos el Cmdlet Get-Host, desde PowerGUI Script Editor:

PS P:\> $Host

Name             : PowerGUIScriptEditorHost
Version          : 3.0.0.2015
InstanceId       : ecaad898-469b-4a86-b688-7bcc6352f46c
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : es-ES
CurrentUICulture : es-ES
PrivateData      : Quest.PowerGUI.Engine.Shell.Host.ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS P:\> $Host.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
3      0      0      2015

PS P:\> Get-Host

Name             : PowerGUIScriptEditorHost
Version          : 3.0.0.2015
InstanceId       : ecaad898-469b-4a86-b688-7bcc6352f46c
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : es-ES
CurrentUICulture : es-ES
PrivateData      : Quest.PowerGUI.Engine.Shell.Host.ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS P:\> (Get-Host).Version

Major  Minor  Build  Revision
-----  -----  -----  --------
3      0      0      2015

¿Versión 3.0? PowerShell 3.0 es de momento una Preview, al igual que Windows 8(que incorpora PowerShell 3.0) y, desde luego, no estaba instalada en el equipo desde el que se invocó a la variable $Host, en el cual estaba instalado PowerShell 2.0. Sin embargo, en este mismo equipo, al consultar desde PowerGUI Script Editor la variable $PSVersionTable, el resultado es el mismo que si se lanza desde la consola de PowerShell:

PS P:\> $PSVersionTable

Name                           Value
----                           ----- 
CLRVersion                     2.0.50727.5448
BuildVersion                   6.1.7601.17514
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: