¿Cómo puedo determinar qué versión de PowerShell está instalada en una computadora y, de hecho, si está instalada?
powershell
MagicAndi
fuente
fuente
$PSVersionTable
es más confiable y devuelve $ PSVersion. También puedes usar$PSVersionTable.PSVersion
. Incluso si está conectado de forma remota a la máquina que ejecuta una versión diferente (invoke-command -computername myRemotePC -Credential foo {$host}
), parece$host
que solo mostrará la versión más baja que acordaron para la serialización. Mientras$PSVersionTable
mostrará la versión verdadera. Espero que ayude a alguien ...notepad $profile
y me tiréfunction psver { $PSVersionTable; $PSVersionTable.PSVersion }
. Una recarga. $profile
y puedo escribir enpsver
cualquier momento para obtener la información detallada de la versión y otros detalles.Me gustaría utilizar ya sea Get-Host o $ PSVersionTable . Como señala Andy Schneider,
$PSVersionTable
no funciona en la versión 1; Se introdujo en la versión 2.fuente
$host.version
no es confiable - por ejemplo en PowerGUI, devuelve la versión anfitrión PowerGUI que no es el mismo que la versión del motor powershell (que es lo que se desea.)Usted puede mirar en el incorporado en la variable,
$psversiontable
. Si no existe, tienes V1. Si existe, le dará toda la información que necesita.fuente
Para determinar si PowerShell está instalado, puede verificar la existencia de
y
y, si existe, si el valor es 1 (para instalado), como se detalla en la publicación del blog Compruebe si PowerShell está instalado y la versión .
Para determinar la versión de PowerShell que está instalada, puede verificar las claves de registro
y
Para determinar la versión de PowerShell que se instala desde un script .ps1, puede usar la siguiente línea, como se detalla en PowerShell.com en la versión de PowerShell que estoy ejecutando .
El mismo sitio también ofrece una función para devolver la versión:
fuente
Puede verificar directamente la versión con una sola línea invocando PowerShell externamente , como desde el símbolo del sistema
Según @psaul , en realidad puede tener un comando que sea independiente de su origen (CMD, PowerShell o Pwsh). Gracias por eso.
Lo probé y funcionó perfectamente tanto en CMD como en PowerShell.
fuente
cmd
ypowershell
en vano. Hubiera esperado el mismo comportamiento también. :)pwsh -Command "(Get-Variable PSVersionTable -ValueOnly).PSVersion"
Funciona genial.Puede verificar que la versión de Windows PowerShell esté instalada completando la siguiente verificación:
En la consola de Windows PowerShell, escriba el siguiente comando en el símbolo del sistema y luego presione ENTRAR:
Verá una salida similar a esta:
http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/
fuente
El método compatible con reenvío recomendado de Microsoft para verificar si PowerShell está instalado y determinar la versión instalada es mirar dos claves de registro específicas. He reproducido los detalles aquí en caso de que se rompa el enlace.
Según la página vinculada:
Para verificar si hay instalada alguna versión de PowerShell, verifique el siguiente valor en el registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
Para verificar si la versión 1.0 o 2.0 de PowerShell está instalada, verifique el siguiente valor en el registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
fuente
Encontré que la forma más fácil de verificar si estaba instalado era:
cmd
, luego OK)powershell
luego presione regresar. Entonces debería obtener elPS
indicador de PowerShell :Luego puede verificar la versión desde el indicador de PowerShell escribiendo
$PSVersionTable.PSVersion
:Escriba
exit
si desea volver al símbolo del sistema (exit
nuevamente si también desea cerrar el símbolo del sistema).Para ejecutar scripts, consulte http://ss64.com/ps/syntax-run.html .
fuente
$host.version
es simplemente incorrecto / poco confiable. Esto le proporciona la versión del ejecutable de alojamiento (powershell.exe, powergui.exe, powershell_ise.exe, powershellplus.exe, etc.) y no la versión del motor en sí.La versión del motor está contenida en
$psversiontable.psversion
. Para PowerShell 1.0, esta variable no existe, por lo que, obviamente, si esta variable no está disponible, es completamente seguro asumir que el motor es 1.0, obviamente.fuente
Utilizar:
Puede descargar la secuencia de comandos detallada de Cómo determinar la versión instalada de PowerShell .
fuente
La forma más fácil de olvidar esta página y nunca volver a ella es aprender
Get-Variable
:No hay necesidad de recordar todas las variables. Solo
Get-Variable
es suficiente (y "Debe haber algo sobre la versión").fuente
$PSVersionTable
Para verificar si PowerShell está instalado, use:
Para verificar si RC2 o RTM está instalado, use:
Fuente: este sitio web .
fuente
Como la respuesta más útil no abordaba la parte de si existe , pensé en darle una opinión a través de una solución rápida y sucia. Se basa en que PowerShell esté en la variable de entorno de ruta , que es probablemente lo que desea. (Sugerencia para la respuesta principal, ya que no lo sabía). Pegue esto en un archivo de texto y asígnele un nombre
o similar.
fuente
Necesitaba verificar la versión de PowerShell y luego ejecutar el código apropiado. Algunos de nuestros servidores ejecutan v5 y otros v4. Esto significa que algunas funciones, como comprimir, pueden o no estar disponibles.
Esta es mi solución:
fuente
El siguiente cmdlet devolverá la versión de PowerShell.
fuente
$PSVersionTable
es una variable automática; un objeto. No es un cmdlet.Este es el resultado de búsqueda superior para "Archivo Batch obtener versión de PowerShell", por lo que me gustaría proporcionar un ejemplo básico de cómo hacer un flujo condicional en un archivo por lotes dependiendo de la versión de Powershell
Ejemplo genérico
Ejemplo del mundo real
fuente
También puede llamar al comando "host" desde la línea de comandos de PowerShell. Debería darte el valor de la
$host
variable.fuente
host
resuelve aGet-Host
. De todos modos, no es una forma confiable de obtener la versión.Extender la respuesta con un operador seleccionado:
fuente
Get-Host
).