De forma predeterminada, Microsoft ha impedido la ejecución de scripts personalizados de PowerShell, a.k.a.cmdlets, al configurar la "Política de ejecución" de PowerShell como "Restringida". Esto se puede cambiar fácilmente.
Puede cambiar el ExecutionPolicy para los scripts / cmdlets de PowerShell ejecutando el comando de PowerShell Set-ExecutionPolicy.
Para elaborar sus opciones para este comando, simplemente ejecute lo siguiente en PowerShell:
Set-ExecutionPolicy -ExecutionPolicy -?
Personalmente, prefiero configurar ExecutionPolicy en "RemoteSigned". Esto me permite ejecutar mis propios scripts, pero evita que se ejecuten scripts sin firmar de otros:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Pruebe esto de la siguiente manera: Cree un nuevo script de PowerShell en su escritorio. Haga clic derecho en el Escritorio, Nuevo> Documento de texto. Nómbralo test.ps1
Haga clic derecho en test.ps1 y seleccione Editar. Debería abrirse con PowerShell ISE (Integrated Scripting Environment). Escriba lo siguiente en el panel superior:
Eco "Hola Mundo!"
inicio-sueño 10
Guárdalo con Ctrl + S, y ciérralo.
Ahora abra PowerShell, cambie a su escritorio e intente ejecutar el script:
cd “$ env: userprofile \ Desktop”
. \ test.ps1
Luego cambie su ExecutionPolicy a "RemoteSigned" e intente nuevamente:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
. \ test.ps1
Observe que se hace referencia al script / cmdlet usando ". \". También puede usar la ruta completa, pero no puede ejecutarla simplemente escribiendo su nombre (como en Unix, ¿eh?).
También tenga en cuenta el uso de "$ env: userprofile" para representar la ruta a su perfil de usuario. En el clásico procesador de comandos de Windows, esto se representaba simplemente con "% userprofile%".
Por último, tenga en cuenta que esto no funcionará como se indica si no está en el grupo de administradores locales. De hecho, es una buena práctica evitar el uso diario de una cuenta que se encuentra en el grupo de administradores locales, por lo que este puede ser el caso para usted. Para solucionarlo, simplemente inicie powershell como administrador para establecer la política de ejecución. Mira aquí.