tech.guitarrapc.cóm

Technical updates

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