Introducción a PowerShell
PowerShell es un shell de línea de comandos y entorno de scripts creado por Microsoft para sistemas Windows, utilizado principalmente para la administración del sistema y tareas de automatización.
EnWindows 11En el sistema, busque directamente en el menú InicioPowerShelly listo.

Los accesos directos habituales incluyen (por ejemplo, en sistemas de 64 bits):
| Nombre del acceso directo | Descripción |
|---|---|
| Windows PowerShell | Versión de línea de comandos de 64 bits |
| Windows PowerShell ISE | Editor de scripts gráfico de 64 bits |
| Windows PowerShell (x86) | Versión de línea de comandos de 32 bits |
| Windows PowerShell ISE (x86) | Editor de scripts gráfico de 32 bits |
⚠️ Nota: Windows 11 no admite sistemas de 32 bits, pero aún incluye la versión x86 de PowerShell para compatibilidad con programas antiguos.
Métodos para iniciar PowerShell
Método de inicio normal
Haga clic en el acceso directo de Windows PowerShell para iniciar la consola de PowerShell.
La barra de título de la consola de PowerShell mostrará "Windows PowerShell".

Nota:Algunos comandos pueden ejecutarse correctamente al ejecutar PowerShell como usuario normal, pero PowerShell en sí no participa en el Control de cuentas de usuario (UAC) y no puede solicitar al usuario que eleve privilegios.
Explicación del Control de cuentas de usuario (UAC)
Función del UAC:Función de seguridad de Windows que evita que el código malicioso se ejecute con privilegios elevados.
Limitaciones de permisos del usuario normal:Al ejecutarse como usuario normal, intentar ejecutar comandos que requieren permisos de administrador provocará un error.
Por ejemplo, detener un servicio de Windows:
Stop-Service -Name W32Time
Ejemplo de mensaje de error:
Stop-Service : Service 'Windows Time (W32Time)' cannot be stopped due to
the following error: Cannot open W32Time service on computer '.'.
At line:1 char:1
+ Stop-Service -Name W32Time
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (System.ServiceProcess.ServiceCon
troller:ServiceController) [Stop-Service], ServiceCommandException
+ FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Comm
ands.StopServiceCommand
Solución: senecesita ejecutar PowerShell con un usuario con privilegios elevados de administrador local.Se ha configurado una segunda cuenta de usuario de dominio, que cumple con el principio de privilegio mínimo; no es administrador de dominio ni tiene privilegios elevados en el dominio.
Pasos:
- Haga clic derecho en el acceso directo de Windows PowerShell
- Seleccione "Ejecutar como administrador"

El sistema mostrará un aviso:Dado que ha iniciado sesión como usuario normal, Windows le pedirá las credenciales del usuario administrador local.

Confirmar la elevación:La barra de título de la ventana de PowerShell elevada mostrará "Administrador: Windows PowerShell".

Efecto:Al ejecutar comandos que requieren permisos de administrador en PowerShell elevado, ya no se encontrarán errores de UAC.
Principio de elevación de privilegios:Solo se debe elevar PowerShell como administrador cuando sea absolutamente necesario.
Equipos remotos:Al trabajar con equipos remotos, no es necesario elevar los privilegios de PowerShell. La elevación de privilegios solo afecta a los comandos locales.
Anclar acceso directo:Puede anclar el acceso directo de PowerShell o Windows Terminal a la barra de tareas para iniciarlo fácilmente:

Inicio seguro de PowerShell elevado:Si necesita iniciar PowerShell con privilegios elevados, mantenga presionada la tecla Shift, haga clic derecho en el icono de PowerShell anclado en la barra de tareas y seleccione "Ejecutar como administrador".

Guía para determinar la versión de PowerShell y la directiva de ejecución
1. Ver la versión de PowerShell
PowerShell proporciona la variable automática$PSVersionTableque contiene la versión y la información relacionada de la sesión actual de PowerShell.
$PSVersionTable
La salida es similar a la siguiente:
Name Value
---- -----
PSVersion 5.1.22621.2428
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.22621.2428
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Notas sobre la versión
- Windows PowerShell 5.1 viene preinstalado en las versiones de Windows actualmente compatibles y es la versión recomendada.
- PowerShell 7 (versión multiplataforma) no es un reemplazo de Windows PowerShell 5.1, sino un producto diferente que se instala en paralelo.
- PowerShell 6 (también conocido como PowerShell Core) ya no recibe soporte.
2. Comprender la directiva de ejecución (Execution Policy)
La directiva de ejecución es una función de seguridad de PowerShell que controla las condiciones de ejecución de scripts para evitar la ejecución involuntaria de scripts maliciosos.
Nota: la directiva de ejecución no es un límite de seguridad; los usuarios experimentados pueden omitirla.
Alcance de la directiva de ejecución
- Se puede configurar para el equipo local (LocalMachine), el usuario actual (CurrentUser) o la sesión actual (Process).
- También se puede administrar la directiva de ejecución de usuarios y equipos mediante la directiva de grupo.
Directivas de ejecución predeterminadas comunes de Windows
| Versión del sistema operativo | Directiva de ejecución predeterminada |
|---|---|
| Windows Server 2022 | RemoteSigned |
| Windows Server 2019 | RemoteSigned |
| Windows Server 2016 | RemoteSigned |
| Windows 11 | Restricted |
| Windows 10 | Restricted |
RestrictedIndica que, de forma predeterminada, no se permite ejecutar ningún script.
3. Consultar la directiva de ejecución actual
Consultar la directiva actual:
Get-ExecutionPolicy
La salida es similar a la siguiente:
Restricted
Mostrar la configuración de la directiva de ejecución de todos los ámbitos:
Get-ExecutionPolicy -List
La salida es similar a la siguiente:
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
4. Ejemplos del impacto de la directiva de ejecución en la ejecución de scripts
Supongamos que hay un archivo de scriptGet-TimeService.ps1y que ejecutar el comando directamente en la línea de comandos interactiva funciona correctamente:
Get-Service -Name W32Time
Sin embargo, al ejecutar el mismo comando desde un script, PowerShell devolverá un error.
.\Get-TimeService.ps1
Mensaje de error:
.\Get-TimeService.ps1 : File C:\tmp\Get-TimeService.ps1 cannot be loaded
because running scripts is disabled on this system. For more information,
see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Get-TimeService.ps1
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
5. Modificar la directiva de ejecución
1. Establecer como RemoteSigned (recomendado)
Permite ejecutar scripts locales y scripts remotos firmados por editores de confianza.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- Debe ejecutar PowerShell como administrador para poder cambiar la directiva de ejecución del equipo local (LocalMachine).
- Al realizar el cambio aparecerá una solicitud de confirmación:
Do you want to change the execution policy? [Y] Yes [A] Yes to All ...
2. Modificar solo la directiva de ejecución del usuario actual (sin necesidad de permisos de administrador)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
6. Mensajes de error comunes y soluciones
Error al modificar la directiva de LocalMachine sin privilegios de administrador elevados:
Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied.
Solución:Ejecute PowerShell como administrador y vuelva a intentarlo, o modifique solo la directiva del usuario actual.
7. Verificación después de la modificación
Después de modificar la directiva de ejecución aRemoteSignedejecute el script:
.\Get-TimeService.ps1
Salida:
Status Name DisplayName ------ ---- ----------- Running W32Time Windows Time
8. Precauciones
- Los scripts son archivos de texto sin formato cuya extensión es
.ps1。
- Se recomienda usarVisual Studio Codeo un editor de texto para escribir scripts.
- Antes de modificar la directiva de ejecución, lea la documentación oficial
about_Execution_Policiespara conocer los riesgos de seguridad asociados.
Otras extensiones
.ps1。about_Execution_Policiespara conocer los riesgos de seguridad asociados.