Windows 10、バージョン 1809 において、マップされたネットワークドライブの再接続に失敗する場合がある

適用対象: Windows 10, version 1809

現象


Windows 10、バージョン 1809 では、次の問題が発生します。

  • Windows エクスプローラでは、マップされたネットワークドライブに赤い X が表示されます。
  • マップされたネットワークドライブでは、コマンド プロンプトで [net use] コマンドを実行すると、利用不可 と表示されます。
  • 通知領域では、通知として次のメッセージが表示されます。

回避策


マイクロソフトは解決に向けて取り組んでおり、2018 年 11 月末迄に解決策を提供する見込みです。 Windows 10 1809 Update History KB 4464619 で、マップされたドライブ トピックを監視します。 現在、デバイスをログオンするときに、スクリプトを実行してマップされたネットワーク ドライブを自動的に再接続することで、この問題を回避できます。 これを行うには、2 つのスクリプトファイルを作成し、必要に応じていずれかの回避策を使用します。

スクリプト

MapDrives.cmd という名前のスクリプトファイルを作成する

このファイルは、Windows エクスプローラと同じ特権で実行する必要があるため、通常は管理者特権ではないコマンドプロンプトで実行する必要があります。

PowerShell -Command "Set-ExecutionPolicy -Scope CurrentUser Unrestricted" >> "%TEMP%\StartupLog.txt" 2>&1 PowerShell -File "%SystemDrive%\Scripts\MapDrives.ps1" >> "%TEMP%\StartupLog.txt" 2>&1


MapDrives.ps1 という名前のスクリプトファイルを作成する

このファイルは、Windows エクスプローラと同じ特権で実行する必要があるため、通常は管理者特権ではないコマンドプロンプトで実行する必要があります。:

$i=3while($True){    $error.clear()    $MappedDrives = Get-SmbMapping |where -property Status -Value Unavailable -EQ | select LocalPath,RemotePath    foreach( $MappedDrive in $MappedDrives)    {        try {            New-SmbMapping -LocalPath $MappedDrive.LocalPath -RemotePath $MappedDrive.RemotePath -Persistent $True        } catch {            Write-Host "There was an error mapping $MappedDrive.RemotePath to $MappedDrive.LocalPath"        }    }    $i = $i - 1    if($error.Count -eq 0 -Or $i -eq 0) {break}    Start-Sleep -Seconds 30}


回避策

すべての回避策は、標準のユーザー セキュリティ コンテキストで実行する必要があります。 管理者特権のセキュリティ コンテキストでスクリプトを実行すると、標準のユーザー コンテキストでマップされたドライバーが使用できなくなります。

回避策 1: スタートアップ アイテムを作成する

注意 この回避策は、ログオン時にネットワーク アクセスがあるデバイスに対してのみ機能します。 デバイスがログオン時にネットワーク接続を確立していない場合、スタートアップ スクリプトはネットワークドライブを自動的に再接続しません。

  1. スクリプト ファイル (MapDrives.cmd) を次の場所にコピーします。

    %ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp

  2. スクリプト ファイル (MapDrives.ps1) を次の場所にコピーします。

    %SystemDrive%\Scripts\

  3. ログファイル (StartupLog.txt) は、%TEMP%\ フォルダーに作成されます。
  4. ログオフしてから、デバイスに再ログオンし、マップされたドライブを開きます。


回避策 2: 予定されたタスクを作成する

  1. スクリプト ファイル MapDrives.ps1 を次の場所にコピーします。

    %SystemDrive%\Scripts\

  2. タスク スケジューラで、アクション タスクの作成を選択します。
  3. [タスクの作成] ダイアログ ボックスの [全般] タブで、タスクの名前 (ネットワーク ドライブなど) と説明を入力します。
  4. [ユーザーまたはグループを変更] を選択し、ローカル ユーザーまたはグループ (LocalComputer\Users など)を選択して、[OK] を選択します。
  5. [トリガー] タブで、[新規]を選択し、[タスクを開始する] フィールドで、[ログオン] を選択します。
  6. [アクション] タブで、[新規] を選択し、[アクション] フィールドの [プログラムの開始] を選択します。
  7. [プログラム / スクリプト] フィールドに [Powershell.exe] と入力します。
  8. 因数を追加 (オプション) フィールドで、次のように入力します。

    -windowsstyle hidden -command .\MapDrives.ps1 >> %TEMP%\StartupLog.txt 2>&1

  9. [開始場所 (オプション)] フィールドに、スクリプト ファイルの場所 (%SystemDrive%\Scripts\) を入力します。

  10. [条件] タブで、 次のネットワーク接続が使用可能な場合にのみ [起動] を選択し、[接続] を選択して [OK] を選択します。
  11. ログオフしてから、デバイスに再度ログオンし、スケジュールされたタスクを実行します。