如何在指定时间为多用户替换映射网络驱动器(无需用户密码)
精准时间替换网络驱动器的无密码解决方案
核心方案:组策略推送带时间触发的用户上下文计划任务
利用组策略给目标用户推送仅在用户登录时运行、精准时间触发的计划任务,结合PowerShell脚本替换驱动器,全程复用用户已存储的凭据,无需知晓用户密码。
步骤1:编写替换驱动器的PowerShell脚本
创建脚本Replace-NetworkDrive.ps1,放在域共享(如\\domain\NETLOGON)确保所有目标用户有读取权限:
# 配置参数(根据实际情况修改) $OldRoot = "\\server1\path" $NewRoot = "\\server2\path" $DriveLetter = "Z:" # 保持原有盘符 $DriveDesc = "业务数据盘" # 保持原有描述 # 移除旧映射(如果存在) $driveName = $DriveLetter.TrimEnd(':') if (Get-PSDrive -Name $driveName -ErrorAction SilentlyContinue) { Remove-PSDrive -Name $driveName -Force } # 创建新持久化映射,自动复用用户存储的凭据 New-PSDrive -Name $driveName -PSProvider FileSystem -Root $NewRoot -Description $DriveDesc -Persist
说明:
-Persist参数会让驱动器在用户后续登录时保留,且脚本以用户身份运行时,会自动调用用户已存储的域凭据或服务器访问凭据,无需输入密码。
步骤2:通过组策略推送计划任务
- 打开组策略管理控制台(GPMC),创建新的用户GPO,链接到包含目标用户的OU。
- 编辑GPO,导航至:
用户配置 > 首选项 > 控制面板设置 > 计划任务 - 新建At least Windows 7类型的计划任务:
- 常规选项卡:选择「仅在用户登录时运行」,勾选「使用用户的权限运行」(关键:确保脚本在用户上下文执行,调用其存储的凭据)
- 触发器选项卡:新建触发器,选择「一次」,设置为周五的指定时间;同时勾选「如果错过了计划的时间,立即运行任务」(覆盖用户当时未登录的场景)
- 操作选项卡:新建操作,选择「启动程序」,程序/脚本填
powershell.exe,添加参数:-ExecutionPolicy Bypass -File "\\domain\NETLOGON\Replace-NetworkDrive.ps1" - 设置选项卡:勾选「允许按需运行任务」,设置「任务失败时重试3次,间隔5分钟」,提升执行成功率。
步骤3:验证与回滚准备
- 测试阶段:在单个测试用户的设备上执行
gpupdate /force,检查任务计划库中是否出现该任务,登录后验证驱动器是否成功替换。 - 回滚预案:提前准备恢复脚本
Restore-OldDrive.ps1,将脚本中的NewRoot换回\\server1\path,需要时可通过相同组策略流程快速推送。
关键优势说明
- 精准时间控制:计划任务可指定精确执行时间,完全避免提前切换到未就绪服务器或延迟切换导致的旧服务器访问失败问题。
- 无密码依赖:全程复用用户已存储的凭据,管理员无需获取或存储用户密码,符合安全规范。
- 轻量化部署:仅需推送脚本和计划任务,无需修改域策略核心配置,影响范围可控。
内容的提问来源于stack exchange,提问作者TCG_at_PPE
相关产品推荐
相关产品推荐

