Uso de Powershell como terminal en IDE de IDEA de IntelliJ como PyCharm, PHPStorm o RubyMine
intellij-idea (9)
He estado intentando ejecutar powershell como mi terminal en windows en pycharm, así que hice lo siguiente:
Sin embargo, cuando intento esto, dice que no puede ejecutar mis scripts y, por lo tanto, recibo el siguiente error: SecurityError
y la identificación completamente calificada es: UnAuthorizedAccess
.
Esto se debe al hecho de que el terminal de pycharm no puede ejecutar mi archivo de perfil Powershell_profile.ps1
.
¿Cómo puedo ejecutar con éxito la terminal de Pycharm con Powershell?
Lo que he intentado hasta ahora, es ingresar a mi directorio principal de powershell como en %windir%/system32/WindowsPowerShell/1.0/profile.ps1
, y luego cambiarlo para incluir lo siguiente:
Set-ExecutionPolicy Unrestricted
Sin embargo, esto no ayuda, y recibo el mismo error cuando intento abrir la terminal de pycharm.
También he intentado ejecutar pycharm como administrador, sin embargo, esto tampoco resuelve el problema y recibo el mismo error mencionado anteriormente.
A partir de este escrito (2018-9-20), ahora hay un complemento de PowerShell disponible here .
He instalado v1.1 en PyCharm v2018.2.3 (Profesional), y parece funcionar como un amuleto, sin juego de palabras.
Este complemento proporciona soporte de tipo Intellisense para los scripts de PS1, así como un terminal PowerShell integrado. Para abrir el terminal, vaya a Herramientas> Consola PowerShell ...
Parece que no hay necesidad de revolcarse con ningún tipo de configuración o permisos para que funcione. Simplemente funciona.
Como se mencionó en otras respuestas, si después de configurar powershell.exe
como su terimal en IntelliJ → Configuración → Herramientas → Terminal → Shell, UnAuthorizedAccess
errores de acceso no UnAuthorizedAccess
, la forma normal de resolver esto es alterar la política de ejecución:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Tenga en cuenta que el nivel Unrestricted
es el menos seguro de todos, y por lo general puede RemoteSigned
para deshabilitar los scripts sin firmar descargados de la web hasta que elimine manualmente Internet
o Intranet
Zone.Identifier
.
Sin embargo, puede correr a una ocasión en la que no pueda cambiar la política de ejecución. Por lo general, eso se debe a la configuración de seguridad corporativa en Active Directory. En PowerShell, eso corresponde a los ámbitos MachinePolicy
y UserPolicy
. Un síntoma principal de esta situación es el siguiente mensaje:
Set-ExecutionPolicy: Windows PowerShell actualizó su política de ejecución con éxito, pero la configuración está anulada por una política definida en un ámbito más específico. Debido a la anulación, su shell mantendrá su actual política de ejecución efectiva de AllSigned. Escriba "Get-ExecutionPolicy -List" para ver la configuración de la directiva de ejecución. Para obtener más información, consulte "Get-Help Set-ExecutionPolicy".
No puede establecer políticas de ejecución en estos ámbitos con PowerShell o gpedit.msc. Los intentos de cambiar esta configuración directamente en el registro también son ineficaces: se aplican al reiniciar o iniciar sesión, pero al mismo tiempo se reimportan desde Active Directory. Sin embargo, aunque no podrá ejecutar todos los scripts de PowerShell arbitrarios, para los perfiles y otros scripts locales que solo se modifican manualmente , todavía hay una solución :
Ejecute el siguiente comando en PowerShell para crear los archivos ceritificate root.pvk y root.cer. Le pedirá que defina y luego confirme la contraseña del certificado:
makecert -n "CN=PowerShell Local Certificate Root" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr localMachine
En la misma carpeta, ejecute el siguiente comando para importar los archivos de certificado generados como su certificado autofirmado: le pedirá la contraseña que se definió anteriormente:
makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer
Firme su script de perfil con el siguiente comando:
Set-AuthenticodeSignature "[script path]" @(Get-ChildItem cert:/CurrentUser/My -codesign)[0]
Al ejecutar un script firmado con autocertificado por primera vez, PowerShell le preguntará si confía en el certificado de esta manera:
El archivo [ruta del script] es publicado por CN = PowerShell User. Este editor no es de confianza en su sistema. Sólo ejecute scripts de editores de confianza.
[V] Nunca ejecute [D] No ejecute [R] Ejecute una vez [A] Siempre ejecute [?] Ayuda (el valor predeterminado es "D")
Responda
A
para ejecutar siempre certificados autofirmados.
Ahora su script de perfil no causará ningún error. Sin embargo, tenga en cuenta que firmar un certificado agrega un bloque de firma al final de su script que contiene su hash. Si está a punto de modificar el script, elimine ese bloque y, una vez que haya terminado de editar el script, vuelva a firmarlo repitiendo el paso 3.
En el Default TextBox del Shell puede agregar la opción de línea de comando de la política de ejecución de la siguiente manera:
powershell.exe -Executionpolicy Unrestricted
He reemplazado cmd.exe con powershell.exe de una manera más simple y espero que pueda ayudar. Estoy usando webstorm2017 y Win10 os.
1.Encuentre la ubicación exacta de powershell.exe
. En la mía y creo que en la mayoría de las computadoras, la ubicación sería C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe
Copie la ruta completa en su portapapeles.
2.En su IDE, abra Archivo => Configuración => Herramientas => Terminal, y pegue la ruta en "Ruta de Shell" en blanco.
3. Reinicie el IDE y todo estaría bien.
Si está ejecutando en Windows 8 x64, ejecutar los dos comandos a continuación puede ayudar. Funcionó para mí.
Set-ExecutionPolicy Unrestricted
start-job { Set-ExecutionPolicy Unrestricted -Force } -RunAs32
Gracias a un comentario encontrado aquí: Powershell en Windows 7: Set-ExecutionPolicy para usuarios regulares
Vaya al archivo ejecutable de PowerShell, haga clic con el botón derecho y ejecute como administrador.
Desde el indicador, use el mismo comando que intentó:
Set-ExecutionPolicy Unrestricted
Una vez hecho esto, cierre PowerShell e intente usarlo nuevamente desde su aplicación.
Nota: No puede establecer la política de ejecución desde un script, ya que la política de ejecución predeterminada le impide ejecutar scripts. (incluso si es la secuencia de comandos de perfil - sigue siendo una secuencia de comandos)
Set-ExecutionPolicy Unrestricted -Scope CurrentUser