tech.guitarrapc.cóm

C#, PowerShell, Unity, Cloud, Serverless Technical Update and Features

Remote Desktop Connection Manager のすすめ

Remote Desktop Connection Manager ご存じの方も多い 複数のRemote Desktop 接続 をツリー上に管理できる MS謹製 のツールです。 今回は、 Windows を使っていて Remote Desktop (mstsc) を利用する方におすすめのこれを紹介します。 複数の Windowsサーバー管理をするに当たり、 CUI は PowerShell でいけます。 が、 GUI はやはり 大多数で Remote Desktop が主流だとおもうので、 ぜひ。

ダウンロード

MS 公式からどうぞ。
Remote Desktop Connection Manager

インストール

ダウンロードしたファイルの実行でインストールできます。 が、せっかくなので PowerShell で自動インストールしてみましょう。 ダウンロードしたファイルを cmd で /? 付きで実行するとヘルプが出て、自動インストールが可能なことが分かります。
RDCMan.msi /?
これを利用してみます。
Windows ® Installer. V 5.0.9200.16384 

msiexec /Option <Required Parameter> [Optional Parameter]

Install Options
	</package | /i> <Product.msi>
		Installs or configures a product
	/a <Product.msi>
		Administrative install - Installs a product on the network
	/j<u|m> <Product.msi> [/t <Transform List>] [/g <Language ID>]
		Advertises a product - m to all users, u to current user
	</uninstall | /x> <Product.msi | ProductCode>
		Uninstalls the product
Display Options
	/quiet
		Quiet mode, no user interaction
	/passive
		Unattended mode - progress bar only
	/q[n|b|r|f]
		Sets user interface level
		n - No UI
		b - Basic UI
		r - Reduced UI
		f - Full UI (default)
	/help
		Help information
Restart Options
	/norestart
		Do not restart after the installation is complete
	/promptrestart
		Prompts the user for restart if necessary
	/forcerestart
		Always restart the computer after installation
Logging Options
	/l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile>
		i - Status messages
		w - Nonfatal warnings
		e - All error messages
		a - Start up of actions
		r - Action-specific records
		u - User requests
		c - Initial UI parameters
		m - Out-of-memory or fatal exit information
		o - Out-of-disk-space messages
		p - Terminal properties
		v - Verbose output
		x - Extra debugging information
		+ - Append to existing log file
		! - Flush each line to the log
		* - Log all information, except for v and x options
	/log <LogFile>
		Equivalent of /l* <LogFile>
Update Options
	/update <Update1.msp>[;Update2.msp]
		Applies update(s)
	/uninstall <PatchCodeGuid>[;Update2.msp] /package <Product.msi | ProductCode>
		Remove update(s) for a product
Repair Options
	/f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode>
		Repairs a product
		p - only if file is missing
		o - if file is missing or an older version is installed (default)
		e - if file is missing or an equal or older version is installed
		d - if file is missing or a different version is installed
		c - if file is missing or checksum does not match the calculated value
		a - forces all files to be reinstalled
		u - all required user-specific registry entries (default)
		m - all required computer-specific registry entries (default)
		s - all existing shortcuts (default)
		v - runs from source and recaches local package
Setting Public Properties
	[PROPERTY=PropertyValue]

Consult the Windows ® Installer SDK for additional documentation on the
command line syntax.

Copyright © Microsoft Corporation. All rights reserved.
Portions of this software are based in part on the work of the Independent JPEG Group.
共有フォルダなどにおいた インストーラーを 使って、PowerShell でインストールしましょう。 $path の箇所に、 インストーラをおいたパスを入れてください。 インストールにおいて、 RDCMan.msi を %Temp%にコピーしてRemote Desktop Connection Managerのインストーラを実行するようにしています。 ファイル名は Install-RemoteDesktopConnectionManager.ps1 とでもして保存します。
# Define
$software = "RDCMan.msi"
$path = Join-Path "Path to Installer (c:\hogehoge)" $software
$destination = Join-Path "C:\Windows\Temp" $software

# run
if (Test-Path $path)
{
    try
    {
        # Copy Software
        Copy-Item -Path $path -Destination $destination -Force -ErrorAction Stop
    }
    catch
    {
        throw $_
    }

    # install Software
    if (Test-Path $destination)
    {
        try
        {
            Start-Process -FilePath $destination -ArgumentList "/m /quiet /passive"
            Write-Host "Installation Complete" -ForegroundColor Cyan
        }
        catch
        {
            throw $_
        }
    }
    else
    {
        Write-Warning "$destination not found!"
    }
}
else
{
    Write-Warning "$path not found!"
}
あとは、 右クリックで [PowerShell でインストール] か インストール用のバッチファイルでいいでしょう。 以下のバッチコマンドを 上記の RemoteDesktopConnectionManger インストール用 PowerShell Script と同一パスにおいてください。
pushd %~dp0
powershell -File ".\Install-RemoteDesktopConnectionManager.ps1"
pause
後は、バッチファイル をダブルクリックでインストールできます。

設定の共有

Remote Desktop Connection Manager は、接続設定などを共有可能です。 パスワードなどを保持するのもアレなので 社内ポリシーに従って貰うとしてできることはできるということで。 設定ファイルは、.rdg という形で xml で保持されています。 一定の規則を持った複数の接続先がある場合、 私は 直接 xml を生成する PowerShell コードを作って追記しています。 例えば 特定の IP末尾で作りたいならこんな感じで。
function Add-RemoteDesctopConnectionManagerServers{

    param(
        [string[]]
        $servers
    )

    $result = @()

    foreach($server in $servers)
    {
        $result += "        <server>"
        $result += "            <name>192.168.0.$server</name>"
        $result += "            <displayName>192.168.0.$server</displayName>"
        $result += "            <comment />"
        $result += '            <logonCredentials inherit="FromParent" />'
        $result += '            <connectionSettings inherit="FromParent" />'
        $result += '            <gatewaySettings inherit="FromParent" />'
        $result += '            <remoteDesktop inherit="FromParent" />'
        $result += '            <localResources inherit="FromParent" />'
        $result += '            <securitySettings inherit="FromParent" />'
        $result += '            <displaySettings inherit="FromParent" />'
        $result += "        </server>"
    }

    return $result
}
実行時はこのようなかんじで。
Add-RemoteDesctopConnectionManagerServers -servers $(10..20)
Add-RemoteDesctopConnectionManagerServers -servers $(30..35)
Remote Desktop Connection Manager から File > Open で、接続設定xmlを追加できるので是非どうぞ。

GitHub

コードを一応おいておきますね。
https://github.com/guitarrapc/PowerShellUtil/tree/master/Install-RemoteDesktopConnectionManager