Estoy distribuyendo un script de PowerShell a mi equipo. La secuencia de comandos es buscar una dirección IP del cliente Vsphere, establecer una conexión mstsc e iniciar sesión en un archivo compartido.
En el momento en que usaron el script, llegaron a conocer la dirección IP de la máquina. Después de eso, siempre tienden a usar mstsc directamente en lugar de ejecutar el script de PowerShell. (Como están usando mstsc, no puedo saber si están usando la VM con frecuencia o no).
Principalmente me dicen que ejecutar PowerShell no es sencillo.
Estoy enfermo por su pereza.
¿Hay alguna manera de hacer que un script de PowerShell funcione haciendo doble clic en un archivo .ps1?
powershell
powershell-2.0
Samselvaprabu
fuente
fuente
Respuestas:
Cree un acceso directo con algo como esto como "Destino":
fuente
-NoProfile
también es útil, ya que el perfil puede hacer todo tipo de cosas que el script no espera.O si desea que todos los archivos de PS1 funcionen como lo hacen los archivos VBS, puede editar el registro de esta manera:
Edite el valor predeterminado para que sea algo así ...
Luego puede hacer doble clic en todos sus archivos .PS1 como le gustaría. en mi humilde opinión, poder salir de la caja.
Voy a llamar a esto "The Powershell De-castration Hack". LOL disfruta!
fuente
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -File "%1"%*
donde puede incluir opcionalmente el-ExecutionPolicy unrestricted
. Tenga en cuenta el cambio al final del comando que permite pasar cero o más parámetros al script de PowerShell. Las comillas y el espacio alrededor de los signos de porcentaje deben ser exactamente como se muestran.ftype Microsoft.PowerShellScript.1=^"^%SystemRoot^%\System32\WindowsPowerShell\v1.0\powershell.exe^" -NoLogo -ExecutionPolicy Unrestricted -File ^"%1^" %*
que logrará lo mismo.Tenga en cuenta que una de las características de seguridad de PowerShell es que los usuarios NO pueden iniciar secuencias de comandos con un doble clic. Tenga mucho cuidado si modifica esta configuración. Una alternativa podría ser empaquetar su script. Algunos editores como PrimalScript pueden hacer eso. Los usuarios aún necesitan instalar PowerShell, pero luego pueden hacer doble clic en el archivo exe. Y parece que su equipo necesita un poco de educación.
fuente
Esto funcionó para mí en Windows 10 y powershell 5.1:
fuente
Set-ExecutionPolicy
).Escribí esto hace unos años (ejecútelo con derechos de administrador):
fuente
Tendrá que ajustar el registro. Primero, configure un PSDrive para HKEY_CLASSES_ROOT ya que esto no está configurado de manera predeterminada. El comando para esto es:
Ahora puede navegar y editar claves y valores de registro en HKEY_CLASSES_ROOT tal como lo haría en los HKDU y HKLM PSDrives normales.
Para configurar hacer doble clic para iniciar scripts de PowerShell directamente:
Para configurar hacer doble clic para abrir los scripts de PowerShell en el ISE de PowerShell:
Para restaurar el valor predeterminado (establece doble clic para abrir los scripts de PowerShell en el Bloc de notas):
fuente
Estoy de acuerdo en que establecer una configuración del sistema puede ser demasiado, pero el acceso directo que requiere una ruta codificada no es ideal. Un archivo bat realmente resuelve bien el problema
RunMyPowershellScript.bat
Ahora se puede hacer doble clic en este archivo por lotes, se pueden crear accesos directos fácilmente al archivo por lotes y el script se puede implementar en cualquier carpeta.
fuente
Comandos simples de PowerShell para configurar esto en el registro;
fuente
ExecutionPolicy RemoteSigned
para que un script aleatorio descargado de la red / internet (con los metadatos que denotan que no se creó localmente) no se ejecute con un doble clic, pero cualquier archivo que haya creado por copia y pegar código en un archivo .ps1 se ejecutará porque no tiene esos metadatos asociados.Revierta el valor si desea volver a usar el Bloc de notas como predeterminado.
fuente
Puede configurar la asociación de
ps1
archivos predeterminada parapowershell.exe
que le permita ejecutar un script de PowerShell haciendo doble clic en él.En Windows 10
ps1
archivoOpen with
Choose another app
More apps
Look for another app on this PC
.C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
.Eso cambiará la asociación de
ps1
archivos y los archivos se ejecutarán haciendo doble clic en ellos. Puede volver a cambiar su comportamiento predeterminado configurandonotepad.exe
la aplicación predeterminada.Fuente
fuente
poner un archivo .cmd simple en mi subcarpeta con mi archivo .ps1 con el mismo nombre, por lo que, por ejemplo, un script llamado "foobar" tendría "foobar.ps1" y "foobar.cmd". Entonces, para ejecutar el .ps1, todo lo que tengo que hacer es hacer clic en el archivo .cmd desde el explorador o ejecutar el .cmd desde el símbolo del sistema. Uso el mismo nombre base porque el archivo .cmd buscará automáticamente el .ps1 usando su propio nombre.
Pushd / popd le permite iniciar el archivo .cmd desde el símbolo del sistema sin tener que cambiar al directorio específico donde se encuentran los scripts. Cambiará al directorio de secuencia de comandos y, cuando finalice, vuelva al directorio original.
También puede detener la pausa si desea que la ventana de comandos desaparezca cuando finalice el script.
Si mi script .ps1 tiene parámetros, los solicito con avisos de GUI usando .NET Forms, pero también hago que los scripts sean lo suficientemente flexibles como para aceptar parámetros si quiero pasarlos. De esta manera, puedo hacer doble clic en el Explorador y no tener que conocer los detalles de los parámetros, ya que me pedirá lo que necesito, con cuadros de lista u otros formularios.
fuente
Esto se basa en la respuesta de KoZm0kNoT. Lo modifiqué para que funcione en todas las unidades.
Los dos pushd / popds son necesarios en caso de que el cwd del usuario se encuentre en una unidad diferente. Sin el conjunto externo, el cwd en la unidad con el script se perderá.
fuente
Esto es lo que uso para que las secuencias de comandos se ejecuten como administrador de forma predeterminada:
Deberá pegarlo en regedit como el valor predeterminado para:
O aquí hay un script que lo hará por usted:
fuente
Si está familiarizado con la administración avanzada de Windows, puede usar este paquete ADM (las instrucciones se incluyen en esa página) y permitir la ejecución de scripts de PowerShell después de hacer doble clic a través de esta plantilla y el GPO local. Después de esto, simplemente puede cambiar el programa predeterminado asociado al tipo de archivo .ps1 a
powershell.exe
(use search, está bastante oculto) y estará listo para ejecutar scripts de PowerShell con doble clic.De lo contrario, recomendaría seguir con otras sugerencias, ya que puede arruinar todo el sistema con estas herramientas de administración.
Creo que la configuración predeterminada es demasiado estricta. Si alguien logra poner un código malicioso en su computadora, entonces él / ella también puede eludir esta restricción (envolverla en un archivo .cmd o .exe, o truco con acceso directo) y todo lo que al final logra es solo evitar usted de manera fácil de ejecutar el script que ha escrito.
fuente
Puede usar la funcionalidad 'SendTo' de Windows para facilitar la ejecución de scripts de PS1. Con este método, puede hacer clic derecho en un script de PS1 y ejecutar. Esto no responde exactamente la pregunta de OP pero está cerca. Con suerte, esto es útil para otros. Por cierto ... esto es útil para una variedad de otras tareas.
fuente
Usé esto (necesito ejecutarlo solo una vez); También asegúrese de tener derechos para ejecutar:
de PowerShell con derechos elevados:
luego de un archivo bat:
y voilá; haciendo doble clic en un * .ps1 lo ejecutará.
fuente
The term '%1' 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.
assoc
se requiere correr .En Windows 10 también es posible que desee eliminar la anulación del Explorador de Windows para la asociación de extensiones de archivo:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ps1\UserChoice
Además del
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\open\command
cambio mencionado en otras respuestas.Ver https://stackoverflow.com/a/2697804/1360907
fuente
Intenté las mejores respuestas a esta pregunta, pero encontré mensajes de error. Entonces encontré la respuesta aquí:
PowerShell dice que "la ejecución de scripts está deshabilitada en este sistema".
Lo que funcionó bien para mí fue usar esta solución:
Puede pegarlo en un archivo .bat y hacer doble clic en él.
fuente
De http://www.howtogeek.com/204166/how-to-configure-windows-to-work-with-powershell-scripts-more-easily :
Establecer el valor predeterminado para el
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell
a0
fuente