我遇到一个问题,即我的映射网络驱动器在重新启动后变得不可用,尝试了各种解决方案使其持久存在[/persistent:yes
通过 PowerShell 等重新映射时]:
net use Z: "\\10.0.1.145\xyz"
驱动器连接正常,但重启后无法继续
我编写了一个脚本来自动完成这个任务:
-
If ( !(Test-Path -Path "\\10.0.1.145\") ) { net use Z: "\\10.0.1.145\xyz" /persistent:yes }
- 奇怪的是:
Test-Path -Path "\\\10.0.1.145\\"
=false
Test-Path -Path "\\\10.0.1.145\xyz"
=true
- 奇怪的是:
net use Z: "\\10.0.1.145\xyz" /persistent:yes
获得与这两个命令相同的结果Test-Path
,唯一的区别是Z:
可以通过 CMD 访问(Z:
一直可以通过 Explorer 访问)
如果前者不起作用,我该如何Z:
持续映射或可靠地自动化?10.0.1.145
答案1
当 Windows 10 登录时,存在一个时间问题,导致它在网络可用之前尝试映射网络驱动器,因此所有网络映射都被禁用。
修理:
- 跑步开始 > 编辑组策略(或者
gpedit.msc
) - 导航 计算机配置 > 管理模板 > 系统 > 登录
- 将“在计算机启动和登录时始终等待网络”设置为“已启用”
- 单击“应用/确定”。
答案2
我遇到了类似的问题,并且可以通过将凭据添加到凭据管理器中的通用凭据来解决:
cmdkey /generic:10.0.1.145 /user:yourUser /pass:yourPass
答案3
这为我解决了这个问题1 ..
- 创建
C:\Scripts\NetworkDriveMap.ps1
脚本(Scripts
如果不存在则创建文件夹), - 创建
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\NetworkDriveMap.cmd
脚本, - 完毕。
.cmd
脚本将在 Windows 启动时执行,它将设置权限并调用.ps1
脚本,该脚本将尝试重新连接共享网络(%Temp%\StartupLogs.txt
重启后检查文件)。
以下是脚本
网络驱动器地图.ps1
$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
}
网络驱动器映射
PowerShell -Command "Set-ExecutionPolicy RemoteSigned -Scope CurrentUser" >> "%TEMP%\StartupLog.txt" 2>&1
PowerShell -File "%SystemDrive%\Scripts\NetworkDriveMap.ps1" >> "%TEMP%\StartupLog.txt" 2>&1
1本文来源自本文,略作修改(修复路径、引用)。