
En Windows, cada vez que hago clic en un archivo .bat
, .cmd
o .vbs
script (Batch y VBScript), sus motores individuales los ejecutan (Símbolo del sistema y host de script de Windows).
Entonces, ¿por qué la extensión de PowerShell está .ps1
asociada al Bloc de notas de forma predeterminada, en lugar de a PowerShell?
Respuesta1
Aparentemente, Microsoft intentó diseñar PowerShell como seguro de forma predeterminada. Aunque Microsoft no parece haber declarado esto explícitamente en ninguna parte, esta restricción probablemente tenía como objetivo evitar que los usuarios fueran engañados para ejecutar y difundir scripts maliciosos.
Hay una buena descripción de por qué esto podría ser peligroso.aquí:
PowerShell es efectivamente el shell de comandos y el lenguaje de secuencias de comandos destinado a reemplazar CMD y secuencias de comandos por lotes en sistemas Windows. Como tal, un script de PowerShell se puede configurar para hacer cualquier cosa que puedas hacer manualmente desde la línea de comandos. Eso equivale a hacer prácticamente cualquier cambio posible en su sistema, hasta las restricciones vigentes en su cuenta de usuario. Entonces, si pudiera hacer doble clic en un script de PowerShell y ejecutarlo con privilegios completos de administrador, una simple frase como esta realmente podría arruinarle el día:
Get-ChildItem "$env:SystemDrive\" -Recurse -ErrorAction SilentlyContinue | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
¡NO ejecute el comando anterior!...
Lo que podría ser peor es que, en lugar de obtener un script que simplemente destruye su sistema de archivos, su amigo podría ser engañado para que ejecute uno que descargue e instale un registrador de teclas o un servicio de acceso remoto.
Sin embargo, en la práctica, el código de PowerShell se puede ejecutar a través de un .bat
archivo simplemente pasando el código como argumento de línea de comando a PowerShell. Entonces PowerShell ahora depende deAARMI(Interfaz de análisis antimalware) para bloquear scripts maliciosos. Por alguna razón inexplicable, la restricción original se mantuvo.