¿Argumentos de la línea de comandos para “Conexión de escritorio remoto para Mac”?

18

No he podido encontrar ninguna documentación que indique que esto es posible, pero ¿hay alguna forma de pasar el nombre de host al que desea conectarse como argumento de línea de comandos a la Conexión de escritorio remoto de Microsoft para Mac?

Información de fondo para aquellos interesados:

Soy administrador de sistemas y estoy en el proceso de cambiarme a una MacBook Air como mi computadora de trabajo principal desde una computadora portátil con Windows 7. Con frecuencia uso Remote Desktop Client para conectarme a los servidores, y en Windows, uso Launchy como el iniciador de mi teclado. He asignado "rdp" como palabra clave, así que cuando invoco a Launchy, escriba "rdp {tab} servername" pasa el texto después de la tecla tab como el nombre de host a mstsc.exe (es decir, mstsc.exe / v: servername) . Esto hace que el cliente de escritorio remoto abra una sesión con el nombre de host especificado.

    
pregunta billc 27.06.2012 - 23:28

7 respuestas

9

No hay acceso a la línea de comandos para el cliente de escritorio remoto de Microsoft. Pero el cliente de escritorio remoto de CoRD gratuito y excelente maneja los enlaces rdp:// que le permitirán llamar desde un lanzador de su elección o incluso a través de open en la línea de comando.

La documentación de CoRD en github explica cómo puede utilizar los parámetros codificados de URL para abrir por completo -configuradas sesiones RDP.

rdp: // sintaxis de URL

CoRD maneja las URL rdp: //, que puede usar desde muchos lugares dentro de OS X. Lamentablemente, no hay forma de extender el diálogo "Conectar al servidor" del Finder, que admite el inicio de las URL de VNC, por lo que no podemos iniciar CoRD desde allí. Si Apple cambia esto (o si alguien está al tanto de una forma de extenderlo) nos encantaría saberlo.

  

Saved Servers

     

Si desea utilizar rdp:// urls con servidores guardados existentes, puede (a partir de 0.5.3)! Solo use la etiqueta en lugar de un nombre de host:

     

open rdp://label

     

Nuevos servidores

     

Desde un shell (usando Terminal):

     

open rdp://hostname

     

Se pueden usar parámetros adicionales para iniciar una sesión totalmente configurada a través de la URL:

     

open rdp://[username[:password]@]hostname[:port][/domain][?parameters]

     

Los siguientes parámetros se pueden configurar para la sesión a través de una cadena de consulta (a partir de 0.5.2):

     
  • screenDepth ### [8|16|24|32]
  •   
  • screenWidth <width in pixels>
  •   
  • screenHeight <height in pixels>
  •   
  • consoleSession ### [true|false|yes|no]
  •   
  • fullscreen ### [true|false|yes|no]
  •   
  • windowDrags ### [true|false|yes|no]
  •   
  • drawDesktop ### [true|false|yes|no]
  •   
  • windowAnimation ### [true|false|yes|no]
  •   
  • themes ### [true|false|yes|no]
  •   
  • fontSmoothing ### [true|false|yes|no]
  •   
  • forwardDisks ### [true|false|yes|no]
  •   
  • forwardPrinters ### [true|false|yes|no]
  •   
  • %código%      
    • forwardAudio ### [0|1|2]
    •   
    • 0 - Forward Audio to the Local Machine (Currently not used since CoRD doesn't present audio)
    •   
    • 1 - Leave Audio at the Remote Machine
    •   
  •   

Ejemplo

     

2 - Disable Audio at both Machines

     

Nota:

     

Cuando se utilizan los ampersands (&) desde la línea de comandos, deben escaparse con una barra invertida (). Se pueden usar dos puntos (:) en lugar de símbolos para el mismo efecto, sin necesidad de escapar.

     

Las contraseñas con caracteres especiales en ellas, @,:, & amp ;, etc. deben codificarse de acuerdo con la Codificación de URL Formato

     

Uso de la línea de comando

     

CoRD es compatible con las siguientes opciones de línea de comando: -host -port -u -d -p -a [8 | 16 | 24 | 32] establecer profundidad de pantalla -width establecer ancho de resolución de pantalla -height configurar alto de resolución de pantalla

     

Ejemplo

     

open rdp://jsmith:[email protected]/BigCoDomain?screendepth###24\&consoleSession###true\&themes###false\&screenWidth###1280\&screenHeight###800

     

Caveats

     

El inicio de CoRD desde la línea de comando de esta manera hace que se abra una nueva instancia de CoRD. Un síntoma de esto es múltiples iconos Dock. Esto anula o disminuye la eficacia de muchos de los puntos fuertes de CoRD, incluidas las sesiones unificadas, etc. Por ese motivo, recomendamos el uso del comando open y las URL rdp: // para iniciar sesiones.

    
respondido por el Ian C. 28.06.2012 - 00:37
7

No me encanta CDR. Funciona, pero parece desmoronarse periódicamente. Hice mi propio script CLI para Microsoft RDP. Creé un script sed + open bash para permitirle pasar 2 argumentos a Microsoft Remote Desktop Client. Puedo pasar un nombre de host y puedo lanzar un interruptor para conectarme a la consola de los hosts de Server 2003.

Sé que esto podría llevarse más lejos. Por ejemplo:

  • Mi script de bash no funcionará con espacios en las rutas o nombres de archivos :)
  • Me imagino que cualquiera de los datos XML en el archivo .RDP podría modificarse con sed.
  • Incluí varias variaciones de un interruptor para conectar a la consola porque soy viejo y nunca puedo recordar cuál me gusta. Apuesto a que Bash Scripting tiene una solución más elegante que la que yo uso.

Así es como lo hice:

  1. Cree un perfil de plantilla RDP de Microsoft con todas sus configuraciones preferidas. Nómbrelo 'template.rdp'. Haz que se conecte a un servidor falso. Utilicé un nombre de servidor 'zzxyzyz'. Esto se usa en el comando 'sed' como la cadena para buscar y reemplazar con un nombre de servidor real.
  2. Cree un script de bash para copiar el template.rdp a un temp.rdp, luego coloque el temp.rdp con el nombre de host deseado que se transmite al invocar el script. Nombré mi script de bash 'rdp.sh'.
  3. Modifique su '~ / .bash_profile' para incluir un alias a 'rdp.sh'
  4. Haga que el script de bash sea ejecutable: chmod + x rdp.sh
  5. el tío yer de Bob

Contenido de mi script de bash :

    #! /bin/bash
rdpTemplateFile='/Users/levi/Dropbox/RDC_Connections/RDS/template.rdp'
rdpTempRDP='/Users/levi/Dropbox/RDC_Connections/RDS/t.rdp'
rdpRunCommand="/Applications/Remote Desktop Connection.app/Contents/MacOS/Remote Desktop Connection"
rdpHost=${1}

if [ "${2}" = "/console" ] ; then
    rdpHost="${rdpHost} /console";
    echo "rdpHost is: " ${rdpHost}
fi

if [ "${2}" = "-console" ] ; then
    rdpHost="${rdpHost} /console";
    echo "rdpHost is: " ${rdpHost}
fi

if [ "${2}" = "-admin" ] ; then
    rdpHost="${rdpHost} /console";
    echo "rdpHost is: " ${rdpHost}
fi

cp -f ${rdpTemplateFile} ${rdpTempRDP}

sed -i '' "s|zzxyzyz|${rdpHost}|g" ${rdpTempRDP}

open -na "${rdpRunCommand}" --args ${rdpTempRDP}

Alias agregado a .bash_profile
(Esto supone que mi archivo de script rdp.sh está en mi directorio de inicio, ~ /)

alias rdp=~/rdp.sh

Haga que el script sea ejecutable:

sudo chmod +x rdp.sh

Ejecutar el script:
Aquí hay un ejemplo que incluye el conmutador de consola. Dejé una línea de depuración en el script que muestra lo que se va a utilizar en el archivo t.rdp.

LeviMAC>rdp MyServer -console
rdpHost is:  MyServer /console
[~/]
LeviMAC>
    
respondido por el Levi 23.03.2013 - 16:17
4

No sé cuándo cambió esto, pero el cliente de escritorio remoto de Microsoft maneja los enlaces rdp: // ahora:

  

Microsoft Remote Desktop utiliza el esquema de URI rdp: // query_string para almacenar las configuraciones de atributos preconfiguradas que se utilizan al iniciar el cliente. Las cadenas de consulta representan un único o conjunto de atributos RDP proporcionados en la URL. Los atributos de RDP están separados por el símbolo "y" comercial (&).

     

Por ejemplo, cuando se conecta a una PC, la cadena es:

     

rdp: // full% 20address = s: mypc: 3389 & audiomode = i: 2 & disable% 20themes = i: 1

Todos los atributos están documentados en la Compatibilidad con el esquema URI del cliente de escritorio remoto página TechNet.

    
respondido por el Jack Douglas 07.08.2015 - 10:51
1

Bueno, después de consultar a mi Microsoft TAM, descubrí que no hay forma de pasar un nombre de host al cliente de Microsoft a través de la línea de comandos.

Por otro lado, CoRD puede hacer lo que me gustaría manejando los enlaces rdp: //. Después de instalar CoRD, si escribe

open rdp://servername

en Terminal o iTerm2, abrirá una sesión al host servername dentro de CoRD.

Uso Alfred (http://www.alfredapp.com/) como mi alternativa "Launchy" en Mac, acabo de descubrirlo después de haber sido un usuario de Quicksilver por mucho tiempo. Compré el Powerpack para Alfred, que te permite usar varias extensiones, una de las cuales le da la posibilidad de lanzar scripts de shell. Así que creé una extensión de script de shell, asigné la palabra clave rdp, la configuré en "parámetro requerido" y configuré la secuencia de comandos en:

open rdp://{query}

Esto me permite invocar a alfred y escribir rdp {tab} servername {return} para abrir una sesión de Conexión a Escritorio remoto al servidor remoto.

    
respondido por el billc 28.06.2012 - 00:38
0

La secuencia de comandos anterior no funciona con el último "Escritorio remoto de Microsoft". Hacer referencia a la aplicación con una variable fue problemático, así que codifiqué la ruta (que es diferente del ejemplo original). También necesitaba eliminar el parámetro '--args' y comenzó a funcionar.

open -na /Applications/Microsoft\ Remote\ Desktop.app/Contents/MacOS/Microsoft\ Remote\ Desktop ${rdpTempRDP}
    
respondido por el William Wallace 21.04.2017 - 21:23
0

Por lo tanto, esto es principalmente para completar otras respuestas y evitar los hacks de scripting:

(TL; DR: puede no haber sido cierto antes, pero el RDP de Microsoft ahora maneja los archivos .rdp automáticamente con open )

Ya tengo muchos perfiles almacenados en la GUI de RDP. (Por cierto, la lista es ~/Library/Containers/com.microsoft.rdc.mac/Data/Library/Preferences/com.microsoft.rdc.mac.plist , como siempre plutil -convert xml1 xyz.list para la visualización humana)

(Referencia adicional: enlace )

Para que sea mandable:

  1. Seleccione el perfil en la GUI
  2. Archivo - > Exportar crea el archivo .rdp , notando que carecerá de información de contraseña
  3. (Estudie el .rdp para ver cómo los parámetros corresponden a la sintaxis del manual rdp: //)
  4. Simplemente open filename .rdp desde la línea de comandos
respondido por el BaseZen 09.05.2018 - 16:40
-1

Creo que sería igual de fácil crear una plantilla para cada servidor al que desea conectarse, así como una con un campo de servidor vacío para esas conexiones "únicas en la vida". Simplemente los guardo en una carpeta y los nombro o los numero para hacer el pedido correctamente. Arrastre la carpeta al dock y tengo un lugar en el que puedo hacer clic para obtener una lista rápida de las plantillas rdp que luego puedo hacer con un solo clic para conectar. O puedo Command + Space y escribir el nombre del archivo y presionar Intro para ejecutarlo. O PUEDE ESCRIBIR TIPO DE TIPO, TIPO DE TIPO e instalar todo tipo de aplicaciones de administración.

    
respondido por el Randy Travis 03.06.2014 - 15:47

Lea otras preguntas en las etiquetas