Home > Windows にまつわる e.t.c.

Hyper-V ホストから指定 VM に RDP 接続する


Hyper-V VM が Windows Server 2012 R2 / Windows 8.1 以降であれば、仮想マシン接続で拡張セッションが使えるのでコピペとか簡単にできますが、これより古い OS の VM では拡張セッションが使えないので、RDP で接続をしないと作業効率が下がることがあります。

そんな時には VM の IP アドレスをホスト側から調べて、RDP 接続するスクリプトがあると便利ですね。

という事で関数書いてみました。
(VM に統合セットアップがインストールされている前提/要管理権限)

##############################################################
# 指定 VM に RDP 接続する
##############################################################
function ConnectRDP4VM($VMName){

    # Hyper-V ホストから疎通性がある IP アドレスプレフィックス正規表現
    #   例)
    #       "10"
    #       "172.\16"
    #       "192\.168\.0"
    #       "fd75:f582:7ae3"
    $IPAddressPrefix = "172\.16"

    [array] $VMsInfomations = Get-VM -Name $VMName -ErrorAction SilentlyContinue
    if( $VMsInfomations.Count -eq 1 ){
        [array] $TergetNIC = $VMsInfomations[0] | Get-VMNetworkAdapter | ? { $_.IPAddresses -Match "^$IPAddressPrefix" }
        if( $TergetNIC.count -ne 0 ){
            # ターゲットの IP
            [array] $IPAddreses = $TergetNIC[0] | Select -ExpandProperty IPAddresses | ? { $_ -Match "^$IPAddressPrefix" }
            $TergetIP = $IPAddreses[0]
        }
        else {
            echo "疎通可能な IP アドレスが無い"
            return
        }
    }
    else{
        echo "対象の VM が存在しない"
        return
    }

    mstsc /v:$TergetIP
}

 

関連情報

関数を PowerShell プロンプトで実行する
http://www.vwnet.jp/Windows/PowerShell/2016100401/UseFunctionInPsPrompt.htm

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.