PowerShell を使用して Azure Cloud Services (クラシック) のロールでリモート デスクトップ接続を有効にする
重要
2024 年 9 月 1 日に、すべてのお客様に対して Cloud Services (クラシック) は非推奨になりました。 既存の実行中のデプロイはすべて Microsoft によって停止およびシャットダウンされ、2024 年 10 月以降、データは永久的に失われます。 新しいデプロイでは、新しい Azure Resource Manager ベースのデプロイ モデル、 Azure Cloud Services (延長サポート) を使用してください。
リモート デスクトップを使用して、Azure で実行されているロールのデスクトップにアクセスできます。 リモート デスクトップ接続を使用して、アプリケーションの実行中に問題のトラブルシューティングと診断を行うことができます。
この記事では、PowerShell を使用して、クラウド サービスのロールでリモート デスクトップを有効にする方法について説明します。 この記事で求められる前提条件については、 Azure PowerShell のインストールおよび構成方法 に関するページを参照してください。 PowerShell では、リモート デスクトップ拡張機能を使用するため、アプリケーションのデプロイ後にリモート デスクトップを有効化できます。
PowerShell からリモート デスクトップを構成する
Set-AzureServiceRemoteDesktopExtension コマンドレットを使用すると、クラウド サービス デプロイの指定したロールまたはすべてのロールでリモート デスクトップを有効にすることができます。 このコマンドレットでは、PSCredential オブジェクトを受け入れる Credential パラメーターを使用してリモート デスクトップ ユーザーのユーザー名とパスワードを指定できます。
PowerShell を対話形式で使用すると、Get-Credentials コマンドレットを呼び出すことで、PSCredential オブジェクトを簡単に設定できます。
$remoteusercredentials = Get-Credential
このコマンドにより、リモート ユーザーのユーザー名とパスワードを安全な方法で入力できるダイアログ ボックスが表示されます。
PowerShell は自動化のシナリオで役立つため、ユーザー操作を必要としない方法で PSCredential オブジェクトを設定することもできます。 最初に、セキュリティで保護されたパスワードを設定する必要があります。 まずプレーンテキストのパスワードを指定し、 ConvertTo-SecureStringを使用してそのパスワードをセキュリティで保護された文字列に変換します。 次に、 ConvertFrom-SecureStringを使用して、セキュリティで保護されたこの文字列を、暗号化された標準文字列に変換する必要があります。 これで、この暗号化された標準文字列を、 Set-Contentを使用してファイルに保存することができます。
パスワードを毎回手動で入力しなくても済むように、セキュリティで保護されたパスワード ファイルを作成することもできます。 また、セキュリティで保護されたパスワード ファイルはプレーン テキスト ファイルよりも適切です。 セキュリティで保護されたパスワード ファイルを作成するには、次の PowerShell を使用します。
ConvertTo-SecureString -String "Password123" -AsPlainText -Force | ConvertFrom-SecureString | Set-Content "password.txt"
重要
パスワードを設定するときは、 複雑さの要件を満たしていることを確認してください。
セキュリティで保護されたパスワード ファイルから資格情報オブジェクトを作成するには、ファイルの内容を読み取り、 ConvertTo-SecureStringを使用して、セキュリティで保護された文字列にもう一度変換する必要があります。
Set-AzureServiceRemoteDesktopExtension コマンドレットは、ユーザー アカウントの期限が切れる 日時 を指定する Expiration パラメーターも受け入れます。 たとえば、現在の日時から数日後にアカウントの期限が切れるように設定することもできます。
次の PowerShell の例では、クラウド サービスでリモート デスクトップ拡張機能を設定する方法を示しています。
$servicename = "cloudservice"
$username = "RemoteDesktopUser"
$securepassword = Get-Content -Path "password.txt" | ConvertTo-SecureString
$expiry = $(Get-Date).AddDays(1)
$credential = New-Object System.Management.Automation.PSCredential $username,$securepassword
Set-AzureServiceRemoteDesktopExtension -ServiceName $servicename -Credential $credential -Expiration $expiry
また、必要に応じて、リモート デスクトップを有効にするデプロイ スロットおよびロールを指定することもできます。 これらのパラメーターが指定されていない場合、コマンドレットは運用環境のデプロイ スロットに含まれるすべてのロールでリモート デスクトップを有効にします。
リモート デスクトップ拡張機能は、デプロイに関連付けられています。 サービスの新しいデプロイを作成した場合は、そのデプロイでリモート デスクトップを有効にする必要があります。 常にリモート デスクトップを有効にしておく必要がある場合は、PowerShell スクリプトをデプロイのワークフローに統合することを検討してください。
ロール インスタンスへのリモート デスクトップ接続
クラウド サービスの特定のロール インスタンスにリモート デスクトップ接続するには、 Get-AzureRemoteDesktopFile コマンドレットを使用します。 LocalPath パラメーターを使用すると、リモート デスクトップ プロトコル (RDP) ファイルをローカルにダウンロードできます。 Launch パラメーターを使用して、クラウド サービスのロール インスタンスにアクセスするための [リモート デスクトップ接続] ダイアログを直接起動することもできます。
Get-AzureRemoteDesktopFile -ServiceName $servicename -Name "WorkerRole1_IN_0" -Launch
サービスでリモート デスクトップ拡張機能が有効になっているかどうかを確認する
Get-AzureServiceRemoteDesktopExtension コマンドレットを使用すると、サービスのデプロイでリモート デスクトップが有効になっているか、無効になっているかが表示されます。 このコマンドレットによって、リモート デスクトップ ユーザーのユーザー名と、リモート デスクトップ拡張機能が有効になっているロールが返されます。 既定では、デプロイ スロットが使用されますが、代わりにステージング スロットを使用することもできます。
Get-AzureServiceRemoteDesktopExtension -ServiceName $servicename
リモート デスクトップ拡張機能をサービスから削除する
デプロイで既にリモート デスクトップ拡張機能を有効にしている状態で、リモート デスクトップ設定を更新する必要がある場合は、まず拡張機能を削除します。 次に、新しい設定でもう一度有効にします。 たとえば、リモート ユーザー アカウントに新しいパスワードを設定する必要がある場合や、アカウントの有効期限が切れた場合などです。 この手順は、リモート デスクトップ拡張機能が有効になっている既存のデプロイで実行する必要があります。 新しいデプロイの場合は、拡張機能を直接適用できます。
リモート デスクトップ拡張機能をデプロイから削除するには、 Remove-AzureServiceRemoteDesktopExtension コマンドレットを使用します。 また、必要に応じて、リモート デスクトップ拡張機能を削除するデプロイ スロットおよびロールを指定することもできます。
Remove-AzureServiceRemoteDesktopExtension -ServiceName $servicename -UninstallConfiguration
Note
拡張機能の構成を完全に削除するには、 UninstallConfiguration パラメーターを使用して Remove コマンドレットを呼び出す必要があります。
UninstallConfiguration パラメーターを使用すると、サービスに適用されている拡張機能の構成がアンインストールされます。 拡張機能の構成は、いずれもサービスの構成に関連付けられています。 UninstallConfiguration を使用せずに Remove コマンドレットを呼び出すと、拡張機能の構成からデプロイとの関連付けが解除されるため、実質的には拡張機能が削除されることになります。 ただし、拡張機能の構成は、サービスに関連付けられたままになります。