La conexión a un escritorio remoto mediante la herramienta Psexec funciona con Powershell y Cmd, pero no funciona en PowerShell ISE

La conexión a un escritorio remoto mediante la herramienta Psexec funciona con Powershell y Cmd, pero no funciona en PowerShell ISE

Utilizo este comando psexec \\ip_address -u user_name -p psw cmd para conectarme al escritorio remoto para ejecutar comandos, funciona cuando lo usas en Power Shell o en el símbolo del sistema, pero no funciona en Power Shell ISE. No obtendré ningún error en ISE, pero una vez que comienza la ejecución, nunca termina hasta que la detienes.

Una vez que comienza la ejecución, nunca termina y no se conecta al escritorio remoto, tampoco obtendrá ningún error, pero funciona perfectamente en PowerShell o CMD.

Respuesta1

En primer lugar, las capturas de pantalla del código realmente no nos son útiles. Obliga a la gente a tener que volver a escribir lo que hiciste, algo que la mayoría no está dispuesta a hacer.

Porque psexec es una herramienta de comando interactiva. Puedes usarlo en el ISE, pero debes pasar todos los parámetros que necesites.

Esta no es una limitación de psexec; intente, por ejemplo, nslookup y verá el mismo problema. No puede utilizar muchos comandos interactivos de DOS/CMD en la consola ISE o en el panel de script IDE como lo hace en cmd/console. Ese no es su diseño.

Esto ha sido documentado desde el lanzamiento de ISE.

Soporte (no) de aplicaciones de consola en ISE

Existen algunas limitaciones sobre cómo interactúa el ISE con las aplicaciones de consola que debe tener en cuenta, para aplicaciones como ftp y netsh.

En primer lugar, ISE ejecuta perfectamente aplicaciones de consola que no requieren la intervención del usuario. Por ejemplo, “ping www.microsoft.com” y “cmd /c dir /s”

La tubería también funciona bien en ISE, por ejemplo, PS C:\Users\ibrar> “show mode” | netsh netsh>en línea

La automatización en scripts que no requieren la intervención del usuario debería estar bien.

Sin embargo, si ejecuta "cmd /k", que requiere entrada, el ISE se bloqueará y tendrá que detener la canalización usando Ctrl-Break o presionando el botón Detener.

Puede pagar al host de la consola según sea necesario para hacer tales cosas usando elCmdlet de inicio del proceso.o uno de los otros métodos de inicio.

Ver:

Ejecutar ejecutables en PowerShell | Profesional de TI

  1. El operador de llamadas y Technet

Por qué: se utiliza para tratar una cadena como un comando ÚNICO. Útil para tratar con espacios.

En PowerShell V2.0, si está ejecutando 7z.exe (7-Zip.exe) u otro comando que comience con un número, debe usar el operador de invocación de comando &.

El analizador PowerShell V3.0 lo hace ahora de forma más inteligente; en este caso, ya no necesita &.

Detalles: ejecuta un comando, script o bloque de script. El operador de llamada, también conocido como "operador de invocación", le permite ejecutar comandos que se almacenan en variables y se representan mediante cadenas. Debido a que el operador de llamada no analiza el comando, no puede interpretar los parámetros del comando.

Example: 

& 'C:\Program Files\Windows Media Player\wmplayer.exe' "c:\videos\my home video.avi" /fullscreen

Entonces tu psexec..

& 'C:\Tools\psexec.exe' "Your command arguments" /accepteula

información relacionada