🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

Q&A

解決済

2回答

3237閲覧

[PowerShell]サーバーが再起動中の場合でもRDP接続したい

woria

総合スコア36

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

0グッド

0クリップ

投稿2019/12/16 01:12

起こったこと

RPA実行のため、仮想サーバーに常にリモートデスクトップ接続する必要がある。
そのため、リモート接続用のPowerShellファイルを用意し、タスクスケジューラで1分おきに起動しました。

以前もこちらで質問をしました。
[PowerShell]警告ウィンドウを解除する方法
この時はTest-ConnectionでPing確認を行えば解決できると思っていましたが、また同じエラーが発生し、以降の1分おきのタスクスケジューラも起動しませんでした。

コード

powershell

1# RDP(リモートデスクトップ接続)する際のプロパティ 2$userid = "???????" 3$passwd = "*******" 4 5# サーバー名 6$serverName = "SV12345" 7 8# RDPを開始する関数 9Function Start-RDP($CONNECT_IP, $CONNECT_USER, $CONNECT_PASS){ 10 11 # Cmdkey用に、接続先情報にポート番号が指定されている場合は除外する 12 $CMDKEY_CONNECT_IP = $CONNECT_IP | ForEach-Object{ $_.Split(":")[0]} 13 Cmdkey.exe /generic:TERMSRV/"$CMDKEY_CONNECT_IP" /user:"$CONNECT_USER" /pass:"$CONNECT_PASS" 14 Start-Process mstsc /v:$CONNECT_IP 15 Timeout 5 16 Cmdkey.exe /delete:TERMSRV/$CMDKEY_CONNECT_IP 17} 18 19# 既存のRDPプロセスの存在確認 20Function Get-RDPProcess { 21 Return Get-Process -Name mstsc 22} 23 24# ---メインルーチン--- 25 26# RDPプロセスがあれば 27if(Get-RDPProcess){ 28 29 # RDP画面の最小化を解除する ※今回のエラーとは関係ない 30 31# RDPがなく、Ping応答が正常なら再接続 32}elseif (Test-Connection $serverName -Quiet) { 33 Start-RDP -CONNECT_IP $serverName -CONNECT_USER $userid -CONNECT_PASS $passwd # ←Ping応答は正常だが、再起動の途中だとエラーになる? 34 35# Ping応答が異常なら何もせず、次のスケジュールを待つ 36}else{ 37 38}

エラー

リモートデスクトップはリモートコンピューターに接続できません。次のいずれかが原因です。 1)サーバーへのリモートアクセスが有効にされていない 2)リモートコンピューターの電源が入っていない 3)リモートコンピューターがネットワークで使用できない リモートコンピューターの電源が入っていること、ネットワークに接続されていること、リモートアクセスが有効になっていることを確認してください。

やりたいこと

  • ping応答以外にも、正常に仮想サーバーにサインインするための判断基準を用意する
  • Start-RDPが失敗してもエラーウィンドウが出ないようにして、次のスケジュールまで待つ

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ping応答以外にも、正常に仮想サーバーにサインインするための判断基準を用意する

テストしてませんが、

PowerShell

1Test-NetConnection ホスト名 RDP

でどうでしょうか?

投稿2019/12/16 02:17

編集2019/12/16 02:20
otn

総合スコア85893

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

RDPサービスがまだ起動しきっていない場合ということですね。
Test-Connection $serverName -Quietを以下に変更し、ポートまで指定して接続確認してください。
Test-NetConnection $serverName -Port 3389 -InformationLevel Quiet
※RDPサービスのポートを規定値の3389から別のものに変更している場合はポート番号を変更してください。

投稿2019/12/16 01:59

Y.H.

総合スコア7918

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問