Azure VM 上のドライブを Azure ストレージ アカウント ファイル共有にマップする

Azure VM 上のドライブを Azure ストレージ アカウント ファイル共有にマップする

Azureストレージアカウントのファイル共有(プライベートエンドポイント付き)をセットアップし、次の手順に従って、同じ仮想ネットワーク内の仮想マシン(ドメインに参加していない)にネットワークの場所をマップしようとしています。MS記事

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp フォルダーに以下のコードを含むバッチ ファイルを配置して、ユーザーがログオンしたときにこのネットワークの場所を割り当てようとしています。

net use z: /delete
net use z: "\\{myaccount}.file.core.windows.net\{myfileshare}"

ローカル管理者アカウントとしてログオンすると、ネットワークの場所の作成は機能しますが、ユーザーアカウントで同じことを実行しようとするとエラーが発生して失敗します。55: 指定されたネットワーク リソースまたはデバイスは利用できなくなりましたというエラー。

これはローカル権限の問題だと思いますが、この問題を解決するための正しい権限を知っている人はいますか。

答え1

権限の問題のように見えますが、Azure Files のトラブルシューティング専用に作成された次のスクリプトを使用して開始します。https://github.com/Azure-Samples/azure-files-samples/tree/master/AzFileDiagnostics/Windows

この記事で紹介されているトラブルシューティング手順のほとんどを自動化しており、非常に役立ちます。 https://learn.microsoft.com/en-us/troubleshoot/azure/azure-storage/files-troubleshoot?tabs=powershell

答え2

そこで、これを機能させるために少し異なる方向をとった。Azure Portalのファイル共有接続ボタンから提供されるスクリプトを使用すると、必ずしも共有が作成されるわけではない。新しいPSDrive関数は、-Persist オプションを指定しても永続的なマッピングを作成しないようです。

New-PSDrive コマンドを Net Use に切り替え、ログオン時およびロック解除時にすべてのユーザーに対してスクリプトを実行する Windows タスク スケジュールを作成しましたが、うまく機能しています。

$connectTestResult = Test-NetConnection -ComputerName {mystorageaccount}.file.core.windows.net -Port 445
if ($connectTestResult.TcpTestSucceeded) {
    # Save the password so the drive will persist on reboot
    cmd.exe /C "cmdkey /add:`"{mystorageaccount}.file.core.windows.net`" /user:`"localhost\{mystorageaccount}`" /pass:`"{mystorageaccountpassword}"
    # Mount the drive
    #New-PSDrive -Name Z -PSProvider FileSystem -Root "\\{mystorageaccount}.file.core.windows.net\{myfileshare}" -Persist
    Net use z: \\{mystorageaccount}.file.core.windows.net\{myfileshare} /persistent:yes
} else {
    Write-Error -Message "Unable to reach the Azure storage account via port 445. Check to make sure your organization or ISP is not blocking port 445, or use Azure P2S VPN, Azure S2S VPN, or Express Route to tunnel SMB traffic over a different port."
}

関連情報