Saltar al contenido

Actualizar Powershell a través de la línea de comandos

Solución:

Ejecute este comando:
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"

Y luego ejecute el MSI con sus parámetros.

Después de esto, necesita actualizar los módulos.

Referencia:

How to Install and Update PowerShell 6

Update PowerShellGet and PackageManagement

Abra Powershell como administrador y escriba el siguiente comando:

iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"

Si desea actualizar a la última vista previa, agregue el -Preview argumento al final:

iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview"

Tienes que escribir tu propio script para hacer esto. No hay nada escrito previamente que pueda hacer esto por usted sin ningún esfuerzo por su parte. La descarga e instalación de archivos desde la web es una práctica muy común. Hay muchas instrucciones y videos en línea sobre cómo hacer esto.

Traducción:

  1. Tienes que ir a la URL a la que te señala Alexandr.
  2. Haga clic en descargar para ir a la página siguiente para acceder a la URL directa y guardar ese enlace.
  3. Luego use los cmdlets web de PowerShell para descargar ese archivo
  4. Luego, use los cmdlets para iniciar una instalación o una instalación silenciosa.

Hay muchos ejemplos en la web sobre el tema de cómo descargar archivos de la web. Incluso muestras prediseñadas que puede revisar y modificar según su esfuerzo.

Vea la Galería de MS PowerShell como su punto de partida.

  • https://www.powershellgallery.com

O consulte la ayuda en línea o incorporada de PowerShell para ver ejemplos.

# Get parameters, examples, full and Online help for a cmdlet or function

(Get-Command -Name Invoke-WebRequest).Parameters
Get-help -Name Invoke-WebRequest -Examples
Get-help -Name Invoke-WebRequest -Full
Get-help -Name Invoke-WebRequest -Online

(Get-Command -Name Invoke-Command).Parameters
Get-help -Name Invoke-Command -Examples
Get-help -Name Invoke-Command -Full
Get-help -Name Invoke-Command -Online

(Get-Command -Name Start-Process).Parameters
Get-help -Name Start-Process -Examples
Get-help -Name Start-Process -Full
Get-help -Name Start-Process -Online

Actualizar

El OP pidió específicamente …

Mi necesidad actual es actualizar de PS 4 a PS 5 en un servidor Windows 2012R2.

…, no PowerShell Core.

Aunque cambiar a otra respuesta aceptada está bien, y no estoy aquí solo para acumular puntos, la respuesta de que ‘Ariel D’ no es válida para la actualización de Windows PowerShell.

Ese comando, como se indica en el artículo de referencia que señala, es para PowerShell Core (PSv6 y posteriores). Ese comando no actualizará PSv4 a PSv5. Instalará / actualizará directamente PowerShell Core a la última versión.

Windows PowerShell requiere .Net completo, PSCore solo requiere .Net core. Ese comando instalará PowerShell Core esa última versión, y eso no actualiza ni reemplaza Windows PowerShell.

Además, para ejecutar el núcleo de PowerShell, su ejecutable es pwsh.exe, no powershell.exe. Esta instalación no cambiará los accesos directos de Windows PowerShell, las opciones de menú y todo a PowerShell Core. Creará un nuevo icono / acceso directo para él, dejando todos los iconos / accesos directos / configuraciones predeterminados de Windows PowerShell, etc.

Para hacer pwsh sea ​​su valor predeterminado, hay varios hacks de registro y menú de Windows que tendrá que hacer.

Windows PowerShell y PSCore son dos entornos separados, diseñados para ejecutarse en paralelo y PSCore aún no tiene compatibilidad total con Windows PowerShell.

Por último, dependiendo de lo que estaba haciendo en su secuencia de comandos de Windows PowerShell 5x e inferior, es posible que eso no funcione en PowerShell Core en absoluto, debido a la compatibilidad con versiones anteriores. Por lo tanto, deberá refactorizarlos / reescribirlos.

Por ejemplo, en Windows con WinPS y PSCore instalados, Get-WmiObject seguirá apareciendo como un cmdlet, pero en PowerShell Core fallará, ya que PowerShell Core no admite esos cmdlets.

Ejemplo:

$PSVersionTable.PSVersion

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
7      0      2

 Get-Command -Name '*WMI*' | Format-Table -AutoSize

CommandType Name                    Version      Source
----------- ----                    -------      ------
Function    Get-WmiClassKeyProperty 1.3.6        PowerShellCookbook
Function    Search-WmiNamespace     1.3.6        PowerShellCookbook
Cmdlet      Get-WmiObject           3.1.0.0      Microsoft.PowerShell.Management
Cmdlet      Invoke-WmiMethod        3.1.0.0      Microsoft.PowerShell.Management
Cmdlet      Register-WmiEvent       3.1.0.0      Microsoft.PowerShell.Management
Cmdlet      Remove-WmiObject        3.1.0.0      Microsoft.PowerShell.Management
Cmdlet      Set-WmiInstance         3.1.0.0      Microsoft.PowerShell.Management
Application nvwmi64.exe             0.0.0.0      C:Windowssystem32nvwmi64.exe
Application WMIADAP.exe             10.0.18362.1 C:WindowsSystem32WbemWMIADAP.exe
Application WmiApSrv.exe            10.0.18362.1 C:WindowsSystem32WbemWmiApSrv.exe
Application WMIC.exe                10.0.18362.1 C:WindowsSystem32WbemWMIC.exe
Application WmiMgmt.msc             0.0.0.0      C:Windowssystem32WmiMgmt.msc
Application WmiPrvSE.exe            10.0.18362.1 C:WindowsSystem32WbemWmiPrvSE.exe

 Get-WmiObject -class Win32_OperatingSystem | Select-Object -Property Caption
Get-WmiObject: The term 'Get-WmiObject' 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.
 Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property Caption

Caption
-------
Microsoft Windows 10 Pro

Además, algunos de los alias a los que está acostumbrado en Windows PowerShell tampoco existen en PowerShell Core.

Por ejemplo:

Windows PowerShell

 $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      18362  752


 Get-Alias -Definition Invoke-WebRequest

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           curl -> Invoke-WebRequest
Alias           iwr -> Invoke-WebRequest
Alias           wget -> Invoke-WebRequest


 Get-Alias -Name curl

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           curl -> Invoke-WebRequest

Núcleo de PowerShell

$PSVersionTable.PSVersion

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
7      0      2

 Get-Alias -Definition Invoke-WebRequest

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           iwr -> Invoke-WebRequest

 Get-Alias -Name curl
Get-Alias: This command cannot find a matching alias because an alias with the name 'curl' does not exist.
 Get-Command -Name 'curl'

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     curl.exe                                           7.55.1.0   C:Windowssystem32curl.exe
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *