امیرحسین کریم پور
مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

حل مشکل وصل نشدن خودکار (Reconnect) درایوهای Map شده شبکه

اخیرا کاربرانی که سیستم عامل ویندوز 10 خود را به نسخه 1809 آپگرید کرده اند مکررا در حال گله و شکایت هستند که چرا Map Drive ها هنگام Startup ویندوز بصورت اتوماتیک Reconnect نمی شوند و بعد از لاگین کردن به سیستم در File Explorer روی تمامی Map Drive ها یک علامت قرمز رنگ بزرگ مشاهده می کنند. در این حال اگر در Command Prompt دستور net use را اجرا کنید جلوی تمامی Map Drive ها کلمه Unavailable را مشاهده خواهید کرد. نکته اینکه مشکل Reconnect نشدن هم برای Map Drive هایی که بصورت دستی کاربران به آن وصل شده اند و هم Map Drive هایی که از طریق GPO به کلاینت ها اختصاص داده است بوجود می آید. زمانی که این مشکل بوجود می آید یک Pop-up در Taskbar با عنوان ظاهر می شود :

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
Could not reconnect all network drives.
Click here to check the status of your network drives

علت اینکه Map Drive ها در هنگام Startup سیستم Reconnect نمی شوند این است که بعد از Restart شدن ویندوز 10 نسخه 1809 بصورت اتوماتیک به سیستم Mount نمی شوند و در File Explorer روی Map drive ها علامت قرمز رنگ ظاهر می شود. این مشکل علاوه بر Map drive هایی که بصورت مستقیم توسط Shared Folder خود سیستم ویندوزی یا لینوکسی ایجاد شدند برای Map drive هایی که به NAS Storage متصل شده اند نیز بوجود می آید. این باگ در ویندوز 10 نسخه 1809 به شرکت مایکروسافت اطلاع رسانی شد و مایکروسافت تصمیم گرفت تا اوایل سال 2019 آنرا برطرف کند. در حال حاضر مایکروسافت با ارائه آپدیت KB4471218 این مشکل را در ویندوز 10 نسخه 1809 برطرف کرده است. حالا ما بدون نصب این آپدیت میخواهیم به برطرف کردن این مشکل بپردازیم.


ساخت یک Logon script برای Reconnect کردن Map Drive ها بصورت اجباری

برای انجام این کار ابتدا Notepad را باز کنید و Script زیر را در آن وارد کنید و فایل را در پوشه C:\PS قرار بدهید :

$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 "Shared folder connection error: $MappedDrive.RemotePath to drive $MappedDrive.LocalPath"
}
}
$i = $i - 1
if($error.Count -eq 0 -Or $i -eq 0) {break}
Start-Sleep -Seconds 30
}

فایل را با پسوند ps1 ذخیره کنید. در این مثال ما اسم فایل را Tosinso-MapDrives گذاشته ایم. یک فایل Script دیگر با اسم Tosinso-MapDrives.cmd ایجاد کنید و Script زیر را در آن وارد کنید :

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

Script فوق به شما این امکان را میدهد که Script ای که با دستورات PowerShell در بالای این اسکریپت نوشتید را به درستی Call کنید. شما میتوانید این اسکریپت را در پوشه StartUp در مسیر زیر قرار دهید تا هنگام Startup اجرا شود :

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

شما میتوانید با نوشتن یک Schedule Task نیز این Script را هنگام Startup اجرا کنید. برای انجام این کار در RUN تایپ کنید Taskschd.msc و اینتر را بزنید. یک Task ایجاد کنید و یک نام به آن اختصاص دهید ( برای مثال reMapDrives-Tosinso ) و در تب General آن Task روی دکمه Change User or Group کلیک کنید و گروه Builtin\Users را انتخاب کنید. و تیک گزینه Run with highest privilege را بزنید. در تب Triggers در قسمت At log on تعریف کنید که هر یوزری که به سیستم لاگین کرد Task اجرا شود. در تب Actions در قسمت Program/script مسیر فایل Tosinso-MapDrives.cmd را وارد کنید. در تب Conditions در قسمت Network تیک گزینه Start only if the following network connection is available را بزنید و از منوی کشویی گزینه Any connection را انتخاب کنید. حالا سیستم را یکبار Restart کنید و مجددا تلاش کنید.


Reconnect کردن Map Drive ها با استفاده از GPO در شبکه دامین

اگر شما فایل سرور در شبکه دامین راه اندازی کردید و کاربران Map Drive هایی از این فایل سرور ها را روی سیستمشان دارند شما بایستی تنظیمات GPO برای Map Drive ها را تغییر دهید تا هنگام Startup به درستی Connect شوند. پس در مسیر User Settings -> Preferences -> Windows Settings -> Drive maps مپ درایو مورد نظر را انتخاب کنید و Action آنرا از Update به Replace تغییر دهید و تیک گزینه Reconnect را بزنید. بعد از اینکه Policy روی کلاینت ها آپدیت شد Map Drive ها حذف خواهد شد و مجددا Assign خواهند شد. امیدوارم مورد توجه شما قرار گرفته باشد.


امیرحسین کریم پور
امیرحسین کریم پور

مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

امیرحسین کریم پور ، مدیر ارشد توسینسو ، متخصص شبکه ، تخصص در حوزه سیستم عامل های کلاینت و سرور مایکروسافت و سرویس های مربوطه ، سیستم عامل لینوکس و... ، سابقه کار با سازمان ها و شرکت های مختلف در زمینه سرویس های مایکروسافت در قالب پروژه ، مشاوره و آموزش. علاقه مند به حوزه امنیت اطلاعات و تست نفوذ سنجی

نظرات