tech.guitarrapc.cóm

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

PowerShell で Remote Desktopを起動させる

Remote Desktop は Windowsのリモートセッションでは標準であるうえ性能の向上が著しいため多くのヒトが使っているいることでしょう。 さて、今回は Remote Desktopで 毎回IPを入力するのもめんどくさい、あるいは RDP構成ファイルを触るのもやだ などという場合に、PowerShellで下準備をしてあげる方法です。

RemoteDesktop接続が可能な相手かを確認する

ただ単に RemoteDesktop起動画面を出すのでは面白くないわけで。 そもそも相手がRemote Desktopできる対象か調べるといいのでは的な。
$server = "192.168.1.1"
$RDPPort = 3389
New-Object System.Net.Sockets.TCPClient -ArgumentList $server,$RDPPort
このようにすると 接続先が RDP に対応しているか Bool で判定されます。 加えて、 Test-ConnectionなどでIP判定とかもろもろするといいのですが、そこは今回は省きます。

コード全体

ということで functionにします。
function Start-RDP {

    [CmdletBinding()]
    param(
    [parameter(
        mandatory,
        position = 0)]
    [string]
    $server,

    [parameter(
        mandatory = 0,
        position = 1)]
    [string]
    $RDPPort = 3389
    )

    # Test RemoteDesktop Connection is valid or not
    $TestRemoteDesktop = New-Object System.Net.Sockets.TCPClient -ArgumentList $server,$RDPPort

    # Execute RDP Connection
    if ($TestRemoteDesktop)
    {
        Invoke-Expression "mstsc /v:$server"
    }
    else
    {
        Write-Warning "RemoteDesktop 接続ができませんでした。ネットワーク接続を確認してください。"
    }

}
利用するときはこのような感じで。
Start-RDP -server "ServerIp"

GitHub

置いておきますね。
https://github.com/guitarrapc/PowerShellUtil/blob/master/Start-RDP/Start-RDP.ps1