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

使用PowerShell向远程计算机传输文件遇错求助

解决PowerShell远程文件传输的New-PSDrive错误问题

首先,我们来逐一拆解你遇到的两个错误,然后给出更简洁的解决方案:

第一个错误:「该提供程序不支持使用凭据」的原因

你脚本里的$using:getcred是问题核心——$using:语法仅用于PowerShell远程会话(比如Invoke-Command)中引用本地变量,在本地运行的脚本里直接用$getcred就可以了。

当你错误地使用$using:getcred时,PowerShell无法正确解析凭据对象,进而抛出了“不支持凭据”的错误,这并不是FileSystem Provider真的不支持凭据参数。

第二个错误:「Drive root不存在」的本质

移除凭据参数后提示路径不存在,大概率不是路径真的不存在,而是当前运行脚本的用户没有访问远程机器uint140的c$共享的权限。默认情况下,c$是管理员共享,需要远程机器的管理员权限才能访问,普通用户无权查看。

另外也需要先确认几个前提:

  • 远程机器uint140处于开机状态且网络可达
  • 远程机器的SMB服务(Server服务)已启动
  • 远程机器的c$共享未被组策略或其他方式禁用

修正后的New-PSDrive用法

如果坚持要映射驱动器,可以把脚本改成这样:

# 设置文件路径
$file = "c:\Powershell\testfile.txt"
# 获取凭据(注意这里直接用$getcred,不需要$using:)
$getcred = Get-Credential 'user'
# 映射远程驱动器
New-PSDrive -Name Oli -PSProvider FileSystem -Root \\uint140\c$ -Credential $getcred
# 复制文件到映射的驱动器根目录
Copy-Item -Path $file -Destination Oli:\
# 用完后可以移除驱动器(可选)
Remove-PSDrive Oli

更高效的替代方案:直接用Copy-Item

其实完全不需要映射驱动器,Copy-Item本身就支持-Credential参数,一步到位更简洁:

$file = "c:\Powershell\testfile.txt"
$getcred = Get-Credential 'user'
# 直接复制文件到远程共享
Copy-Item -Path $file -Destination \\uint140\c$ -Credential $getcred

如果后续要扩展到多用户/多机器场景,你可以把目标机器名放到一个列表里,用foreach循环遍历执行复制操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:33:09