PowerShell发送文件到远程文件夹时New-PSDrive报网络资源类型错误如何解决
错误产生原因
- 凭证格式错误:非域环境下直接使用
Administrator作为用户名,系统会默认以本地机器/域的账号前缀匹配,远程主机无法识别对应账号,导致鉴权失败触发报错。 -Persist参数冲突:-Persist参数会将映射盘符持久化写入系统,若脚本运行上下文(比如定时任务的运行账号)没有本地盘符创建权限,或是J盘已被其他资源占用,都会触发映射失败。- 路径逻辑错误:你映射的J盘对应远程
\\REMOTE_ip\D$\test路径,但后续Copy-Item的目标路径仍指向本地D盘,完全没有用到映射的远程盘符,属于逻辑问题。 - 远程访问限制:Windows默认开启UAC远程限制,本地管理员组账号远程访问
D$这类系统管理共享时会被降权,无法正常访问共享资源。 - 网络/服务异常:远程主机SMB服务未开启、445端口被防火墙拦截,也会导致无法识别网络资源。
修复方案
修复后完整代码
# 配置参数 $Source = "d:\test\myZipFile.zip" $REMOTE_ip = "替换为你的远程主机IP" $Dest = "\\$REMOTE_ip\D$\test" $Username = "$REMOTE_ip\Administrator" # 增加远程IP前缀,匹配远程主机账号 $Password = ConvertTo-SecureString "PasswordOFRemotePC" -AsPlainText -Force $mycreds = New-Object System.Management.Automation.PSCredential($Username, $Password) # 临时映射盘符,去掉-Persist参数 New-PSDrive -Name J -PSProvider FileSystem -Root $Dest -Credential $mycreds # 目标路径改为映射的远程J盘 Copy-Item -Path $Source -Destination "J:\myZipFile1.zip" # 用完移除临时盘符,避免资源占用 Remove-PSDrive -Name J -Force
核心修改说明
- 调整用户名格式,增加远程IP前缀,确保远程主机可以正确识别账号。
- 去掉
-Persist参数,仅创建临时映射盘符,不需要持久化权限,适配定时任务的后台运行场景。 - 修正
Copy-Item的目标路径为映射后的J盘路径,确保文件写入远程目录。 - 增加临时盘符清理逻辑,避免后续运行出现盘符占用问题。
额外排查建议
- 提前手动在本地运行窗口输入
\\远程IP\D$\test,使用配置的管理员账号登录,确认可以正常访问目录。 - 确认远程主机防火墙开放445端口入站规则,SMB文件共享功能已开启。
- 若要彻底解决UAC远程限制,可在远程主机上修改注册表:路径
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System,新建DWORD值LocalAccountTokenFilterPolicy,数值设为1,重启后生效。
内容的提问来源于stack exchange,提问作者Mix tutor
相关产品推荐
相关产品推荐

