Zamapowany dysk sieciowy może zakończyć się niepowodzeniem w Windows 10, wersja 1809

Ten artykuł zawiera obejście problemu polegającego na tym, że ponowne nawiązanie połączenia z zamapowanym dyskiem sieciowym może zakończyć się niepowodzeniem w Windows 10, wersja 1809.

Dotyczy: Windows 10, wersja 1809
Oryginalny numer KB: 4471218

Symptomy

W Windows 10, wersja 1809 występują następujące problemy:

  • W Eksploratorze Windows czerwony znak X jest wyświetlany na zamapowanych dyskach sieciowych.
  • Zamapowane dyski sieciowe są wyświetlane jako niedostępne po uruchomieniu net use polecenia w wierszu polecenia.
  • W obszarze powiadomień zostanie wyświetlony następujący komunikat:

    Nie można ponownie połączyć wszystkich dysków sieciowych.

Obejście problemu

Firma Microsoft pracuje nad rozwiązaniem i szacuje, że rozwiązanie będzie dostępne do końca listopada 2018 r. Monitoruj zamapowany temat dysku w 4464619 Windows 10 1809 Update History KB. Obecnie można obejść ten problem, uruchamiając skrypty, aby automatycznie ponownie połączyć zamapowany dysk sieciowy podczas logowania się na urządzeniu. W tym celu utwórz dwa pliki skryptów, a następnie w razie potrzeby użyj jednego z obejść.

Tworzenie pliku skryptu o nazwie MapDrives.cmd

Plik powinien być uruchamiany w regularnym wierszu polecenia, ale nie w wierszu polecenia z podwyższonym poziomem uprawnień, ponieważ powinien być uruchamiany z tym samym uprawnieniem co Eksplorator Windows:

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

Tworzenie pliku skryptu o nazwie MapDrives.ps1

Plik powinien być uruchamiany w regularnym wierszu polecenia, ale nie w wierszu polecenia z podwyższonym poziomem uprawnień, ponieważ powinien być uruchamiany z tym samym uprawnieniem co Eksplorator Windows:

$i=3
while($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
}

Obejścia

Wszystkie obejścia powinny być wykonywane w standardowym kontekście zabezpieczeń użytkownika. Wykonywanie skryptów w kontekście zabezpieczeń z podwyższonym poziomem uprawnień uniemożliwi udostępnianie zamapowanych dysków w standardowym kontekście użytkownika.

Obejście 1: Tworzenie elementu startowego

Uwaga

To obejście działa tylko w przypadku urządzenia, które ma dostęp do sieci podczas logowania. Jeśli urządzenie nie nawiązało połączenia sieciowego do czasu logowania, skrypt uruchamiania nie będzie automatycznie ponownie łączyć dysków sieciowych.

  1. Skopiuj plik skryptu (MapDrives.cmd) do następującej lokalizacji:
    %ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp
  2. Skopiuj plik skryptu (MapDrives.ps1) do następującej lokalizacji:
    %SystemDrive%\Scripts\
  3. Plik dziennika (StartupLog.txt) zostanie utworzony w folderze %TEMP%\.
  4. Wyloguj się, a następnie zaloguj się ponownie na urządzeniu, aby otworzyć zamapowane dyski.

Obejście 2: Tworzenie zaplanowanego zadania

Uwaga

Okno programu PowerShell miga po uruchomieniu zaplanowanego zadania.

  1. Skopiuj plik skryptu MapDrives.ps1 do następującej lokalizacji:
    %SystemDrive%\Scripts\
  2. W obszarze Harmonogram zadań wybierz pozycję Akcja>Utwórz zadanie.
  3. Na karcie Ogólne w oknie dialogowym Tworzenie zadania wpisz nazwę (na przykład mapowanie dysków sieciowych) i opis zadania.
  4. Wybierz pozycję Zmień użytkownika lub grupę, wybierz lokalnego użytkownika lub grupę (na przykład LocalComputer\Users), a następnie wybierz przycisk OK.
  5. Na karcie Wyzwalacze wybierz pozycję Nowy, a następnie wybierz pozycję Przy logowaniu w polu Rozpocznij zadanie .
  6. Na karcie Akcje wybierz pozycję Nowy, a następnie wybierz pozycję Uruchom program dla pola Akcja .
  7. Wpisz Powershell.exe dla pola Program/skrypt .
  8. W polu Dodaj argumenty (opcjonalnie) wpisz następujące polecenie:
    -windowstyle hidden -command .\MapDrives.ps1 >> %TEMP%\StartupLog.txt 2>&1
  9. W polu Start in (opcjonalnie) wpisz lokalizację (%SystemDrive%\Scripts\) pliku skryptu.
  10. Na karcie Warunki wybierz opcję Uruchom tylko wtedy, gdy dostępne jest następujące połączenie sieciowe , wybierz pozycję Dowolne połączenie, a następnie wybierz przycisk OK.
  11. Wyloguj się, a następnie zaloguj się ponownie na urządzeniu, aby uruchomić zaplanowane zadanie.