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:
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:
- Tienes que ir a la URL a la que te señala Alexandr.
- Haga clic en descargar para ir a la página siguiente para acceder a la URL directa y guardar ese enlace.
- Luego use los cmdlets web de PowerShell para descargar ese archivo
- 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