You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

New-PSDrive映射网络驱动器报错“网络路径不存在”问题求助

New-PSDrive 报“The network Path was not found”错误修复方案

问题根因

这个报错是典型的SMB会话预认证缺失问题:资源管理器访问目标路径时会自动完成SMB会话建立和身份校验,而直接执行New-PSDrive时,命令在身份认证未完成的情况下就发起路径访问校验,就会抛出路径不存在的错误。另外当前代码还有两个可优化点也会触发该错误:

  • UNC路径末尾多余的反斜杠在部分PowerShell版本中会导致路径解析失败
  • 不需要持久化盘符的情况下使用-Persist参数,会提升身份校验的要求,增加失败概率

修复方案

方案1:直接删除不必要的盘符映射(最优)

如果仅需要读取目标路径下的文件,完全不需要映射本地盘符,直接通过带凭据的UNC路径访问即可,修改后的代码如下:

Get-Date -Format "dddd MM/dd/yyyy HH:mm K">> "C:\file\results.txt"
$cred = Get-Credential -Credential domain\name

$serverlist = @(get-content -Path "C:\file\serverlist.txt") 
foreach ($s in $serverlist) 
{
    $path2 = "\\$s\e$\Updates\file\errors.txt"
    # 直接通过凭据访问UNC路径,不需要映射盘符
    $file = Get-Content $path2 -Credential $cred
    $containsWord = $file | %{$_ -match "0"}
    if ($containsWord -contains $true) {
        Out-File -FilePath  "C:\file\results.txt" -Append -InputObject "$s : ok"
    } else {
        Out-File -FilePath  "C:\file\results.txt" -Append -InputObject "$s : nok"
    }
}

方案2:保留盘符映射逻辑的修复

如果确实需要映射盘符,按以下规则修改代码:

  1. 删除UNC路径末尾的反斜杠
  2. 移除不必要的-Persist参数
  3. 映射前先完成SMB会话认证

修改后的代码如下:

Get-Date -Format "dddd MM/dd/yyyy HH:mm K">> "C:\file\results.txt"
$cred = Get-Credential -Credential domain\name
$netCred = $cred.GetNetworkCredential()

$serverlist = @(get-content -Path "C:\file\serverlist.txt") 
foreach ($s in $serverlist) 
{
    # 提前建立SMB会话认证
    net use \\$s\e$ /user:$($netCred.Domain + "\" + $netCred.UserName) $netCred.Password 2>&1 | Out-Null
    $path = "\\$s\e$\Updates\file"
    New-PSDrive -Name "S" -Root $path -PSProvider "FileSystem" -Credential $cred | Out-Null
    $path2 = "\\$s\e$\Updates\file\errors.txt"
    $file = Get-Content $path2
    $containsWord = $file | %{$_ -match "0"}
    if ($containsWord -contains $true) {
        Out-File -FilePath  "C:\file\results.txt" -Append -InputObject "$s : ok"
    } else {
        Out-File -FilePath  "C:\file\results.txt" -Append -InputObject "$s : nok"
    }
    Remove-PSDrive -Name "S" -Force
    # 清理SMB会话
    net use \\$s\e$ /delete 2>&1 | Out-Null
}

内容的提问来源于stack exchange,提问作者su7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:36:00