「Mac用のリモートデスクトップ接続」のコマンドライン引数


19

これが可能であることを示すドキュメントを見つけることができませんでしたが、接続先のホスト名をコマンドライン引数としてMicrosoftのMac用リモートデスクトップ接続に渡す方法はありますか?

興味のある人のためのいくつかの背景情報:

私はシステム管理者であり、Windows 7ラップトップからメインの仕事用コンピューターとしてMacBook Airへの移行を進めています。私は頻繁にリモートデスクトップクライアントを使用してサーバーに接続し、Windowsでは、Launchyをキーボードランチャーとして使用します。「rdp」をキーワードとして割り当てたので、Launchyを起動するときに「rdp {tab} servername」と入力すると、タブキーの後のテキストがホスト名としてmstsc.exeに渡されます(つまり、mstsc.exe / v:servername) 。これにより、リモートデスクトップクライアントは指定されたホスト名へのセッションを開きます。


2
残念ながら、リモートデスクトップクライアントへのコマンドラインアクセスやAppleScriptアクセスはありません。CoRDの開発者に、それをCoRDに追加することを検討するかどうかを尋ねました。また、MSのRDPクライアントよりも優れたクライアント用のプラグインcord.sourceforge.netがあります。:)
イアンC.

@Ian C.、私は過去にCoRDを個人用MacBookで使っていました...数年前のように感じます。Microsoftのクライアントの安定性と「洗練された」外観に比べて、実際には満足していませんでした。スクリーンショットの1つで気づいたので、実際にもう一度ダウンロードしました。rdp://リンクの処理に関する記述がありました。これはまさに私が探しているものですので、私をCoRDに向けてくれてありがとう!「open rdp:// {query}」を実行するAlfredで「シェルスクリプト」拡張機能を設定できました。乾杯!
ビルク

ああすごい。rdp://リンクを処理していることに気付かなかった。すごい。コメントを回答にします。:)
イアンC.

回答:


11

Microsoft Remote Desktop Clientにはコマンドラインアクセスがありません。しかし、無料で最も優れたCoRDリモートデスクトップクライアントrdp://、選択したランチャーから、またはopenコマンドラインからでも呼び出すことができるリンクを処理します。

githubCoRDドキュメントには、URLエンコードされたパラメーターを使用して、完全に構成されたRDPセッションを開く方法が記載されています。

rdp:// URL構文

CoRDはrdp:// URLを処理します。これはOS X内の多くの場所から使用できます。残念ながら、VNC URLの起動をサポートするFinderの「サーバーに接続」ダイアログを拡張する方法はないため、そこからCoRDを起動できません。Appleがこれを変更する場合(または誰かがそれを拡張する方法を知っている場合)、私たちはそれについて聞いてみたいです。

Saved Servers

rdp://既存の保存済みサーバーでURL を使用する場合は、次のことができます(0.5.3以降)。ホスト名の代わりにラベルを使用するだけです:

open rdp://label

新しいサーバー

シェルから(ターミナルを使用):

open rdp://hostname

URL経由で完全に構成されたセッションを開始するには、追加のパラメーターを使用できます。

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

次のパラメータは、クエリ文字列を介してセッションに設定できます(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]
  • 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
    • 2 - Disable Audio at both Machines

open rdp://jsmith:securePassword@hostname.bigco.com/BigCoDomain?screendepth###24\&consoleSession###true\&themes###false\&screenWidth###1280\&screenHeight###800

注意:

コマンドラインからアンパサンド(&)を使用する場合は、バックスラッシュ()でエスケープする必要があります。コロン(:)は、エスケープする必要なく、同じ効果を得るためにアンパサンドの代わりに使用できます。

@、:、&などの特殊文字を含むパスワードは、URLエンコード形式に従ってエンコードする必要があります

コマンドラインの使用

CoRDは、次のコマンドラインオプションをサポートしています。-host -port -u -d -p -a [8 | 16 | 24 | 32]画面の深さの設定-width画面の解像度の幅の設定

/Applications/CoRD.app/Contents/MacOS/CoRD -host example.com -port 3389 -u username

注意事項

この方法でコマンドラインからCoRDを起動すると、CoRDの新しいインスタンスが開かれます。この症状の1つは、複数のDockアイコンです。これにより、統合セッションなど、多くのCoRDの長所の有効性が上書きまたは低下します。そのため、openコマンドとrdp:// URLを使用してセッションを起動することをお勧めします。

ここに画像の説明を入力してください


1
面白すぎる!あなたも答えたように、私は自分の質問に答えていました。ご協力ありがとうございます!
ビルク

CoRD GitHubのページによると、このプロジェクトは2015年8月16日以降メンテナンスされていません
。– kenorb

残念。良かったです。
イアンC.

この答えは時代遅れです:Mac用のMicrosoftリモートデスクトップの新しいバージョンはrdp://リンクをサポートしています(ただし、別のスキームを使用しています)。ジャックダグラスの答えを参照してください。
chrstphrchvz

7

CoRDは好きではありません。動作しますが、定期的にフレークアウトするようです。Microsoft RDP用の独自のCLIスクリプトを作成しました。2つの引数をMicrosoft Remote Desktop Clientに渡すことができるように、sed + open bashスクリプトを作成しました。ホスト名を渡すことができ、スイッチを投げてServer 2003ホストのコンソールに接続できます。

これをさらに進めることができると思います。例えば:

  • 私のbashスクリプトは、パスまたはファイル名にスペースが含まれていると機能しません:)
  • .RDPファイル内のXMLデータは、sedで変更できると思います。
  • コンソールに接続するためのスイッチのバリエーションをいくつか用意しました。なぜなら、私は年をとっており、どれが好きなのか思い出せないからです。bashスクリプトには、私が使用するよりもエレガントなソリューションがあると思います。

ここに私がそれをした方法があります:

  1. すべての優先設定でMicrosoft RDPテンプレートプロファイルを作成します。「template.rdp」という名前を付けます。偽のサーバーに接続させます。サーバー名「zzxyzyz」を使用しました。これは、「sed」コマンドで、検索して実際のサーバー名に置き換える文字列として使用されます。
  2. template.rdpをtemp.rdpにコピーするbashスクリプトを作成してから、スクリプトの呼び出し時に渡される目的のホスト名でtemp.rdpをsedします。bashスクリプトに「rdp.sh」という名前を付けました。
  3. 「〜/ .bash_profile」を変更して、「rdp.sh」へのエイリアスを含めます
  4. bashスクリプトを実行可能にします:chmod + x rdp.sh
  5. ボブのヤーおじ

私の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}

.bash_profileに追加されたエイリアス
(これは、rdp.shスクリプトファイルがホームディレクトリ〜/にあることを前提としています)

alias rdp=~/rdp.sh

スクリプトを実行可能にします。

sudo chmod +x rdp.sh

スクリプトを実行します
。コンソールスイッチを含む例を次に示します。スクリプトにデバッグ行を残し、t.rdpファイルにsed'dされる内容を示します。

LeviMAC>rdp MyServer -console
rdpHost is:  MyServer /console
[~/]
LeviMAC>

私はこのコンセプトを機能させることができましたが、それはある程度の修正が必要です。RDPを開始するために使用したコマンドはopen -na "/Applications/Microsoft Remote Desktop.app/Contents/MacOS/Microsoft Remote Desktop" path/to/profile.rdp
Terrabits

6

これがいつ変更されたかはわかりませんが、Microsoft Remote Desktop Clientはrdp://リンクを処理します。

Microsoft Remote Desktopは、URIスキームrdp:// query_stringを使用して、クライアントの起動時に使用される事前設定された属性設定を保存します。クエリ文字列は、URLで提供される単一または一連のRDP属性を表します。RDP属性は、アンパサンド記号(&)で区切られています。

たとえば、PCに接続するときの文字列は次のとおりです。

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

すべての属性は、リモートデスクトップクライアントURIスキームサポート TechNetページに記載されています。


いくつかのサンプルURLをご覧ください。ローカルポート3389をWindowsマシンに転送し、公式のMicrosoftリモートデスクトップアプリを使用してユーザー「et」として接続します。しかし、エラーを出さないURLを作成することはできません。
ブルーノブロノスキー

localhostの代わりに127.0.0.2を使用してみますか?

1
パスワードを保存/渡す方法についてのアイデアはありますか?
ブルーノブロノスキー

1
現在、Microsoft Remote Desktop(Mac用)アプリにパスワードを保存することをしています。ただし、私の目標は、sshトンネル経由でポートを開いた後、コマンドライン経由で新しいIP:Portへの接続を開始することです。私は現在、「今10.10.1.23:5589に保存された接続のホストを変更し、接続」で終わる私のスクリプトを改善しようとしている
ブルーノBronosky

1
方法を見つけたら教えてください:)

1

さて、Microsoft TAMに相談したところ、コマンドライン経由でホスト名をMicrosoftクライアントに渡す方法がないことがわかりました。

一方、CoRDは、rdp://リンクを処理することで、実際に必要な処理を実行できます。CoRDのインストール後、次のように入力した場合

open rdp://servername

TerminalまたはiTerm2では、CoRD内のホストservernameへのセッションを開きます。

私はアルフレッド(http://www.alfredapp.com/)をMacでの「Launchy」の代替として使用します。Quicksilverの長年のユーザーであることに気付いたばかりです。私はAlfred用のPowerpackを購入しました。これにより、多くの拡張機能を使用でき、そのうちの1つにシェルスクリプトを起動する機能があります。そこで、シェルスクリプト拡張機能を作成し、キーワードrdpを割り当て、「必須パラメーター」に設定し、スクリプトを次のように設定しました。

open rdp://{query}

これにより、alfredを起動し、rdp {tab} servername {return}と入力して、リモートサーバーへのリモートデスクトップ接続セッションを開くことができます。


0

上記のスクリプトは、最新の「Microsoft Remote Desktop」では機能しません。変数を使用してアプリケーションを参照することには問題があったため、パスをハードコーディングしました(元の例とは異なります)。また、「-args」パラメータを削除する必要があり、機能し始めました。

open -na /Applications/Microsoft\ Remote\ Desktop.app/Contents/MacOS/Microsoft\ Remote\ Desktop ${rdpTempRDP}

0

そのため、これは主に他の答えを具体化し、スクリプトハッキングを避けるためです。

(TL; DR:以前は真実ではなかったかもしれませんが、MicrosoftのRDPは.rdpファイルをで自動的に処理するようになりましたopen

RDP GUIには既に多くのプロファイルが保存されています。(ところで、plistは~/Library/Containers/com.microsoft.rdc.mac/Data/Library/Preferences/com.microsoft.rdc.mac.plistいつものようplutil -convert xml1 xyz.listに人間が見るためです)

(さらに参照:https : //macmule.com/2013/10/22/how-to-create-a-microsoft-remote-desktop-8-connection/

コマンドライン可能にするには:

  1. GUIでプロファイルを選択します
  2. [ファイル]-> [エクスポート]で.rdpファイルが作成され、パスワード情報が不足することに注意してください
  3. (.rdpを調べて、パラメーターが手動のrdp://構文にどのように対応するかを確認してください)
  4. コマンドラインから単にopenファイル名.rdp

-1

接続するサーバーごとにテンプレートを作成することも、「一度だけ」接続用の空のサーバーフィールドを持つテンプレートを作成することも簡単だと思います。私はちょうどそれらをフォルダにポップし、名前を付けるか番号を付けて順序を正しくします。フォルダをドックにドラッグすると、クリックしてrdpテンプレートのクイックリストを取得できる場所があり、それをクリックするだけで接続できます。または、コマンド+スペースキーを押してファイルの名前を入力し、Enterキーを押して実行します。または、タイプをタイプし、タイプをタイプし、あらゆる種類の管理アプリをインストールできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.