Hyper-V 虚拟机文件传输操作指南
基于 Windows 11 宿主机 + Hyper-V + Windows 11 虚拟机的真实环境整理
适用场景:宿主机与虚拟机之间快速传输文件,无需第三方工具
一、前置条件检查
1.1 确认虚拟机名称
在宿主机以管理员身份打开 PowerShell,执行:
Get-VM | Select Name, State
预期输出示例:
Name State
---- -----
Win11-Test Running
记下你的 VM 名称,后续命令中需要替换。
1.2 确认并启用来宾服务接口(Guest Service Interface)
在宿主机执行:
Get-VMIntegrationService -VMName "Win11-Test"
预期输出示例:
VMName Name Enabled PrimaryStatusDescription
------ ---- ------- ------------------------
Win11-Test 来宾服务接口 False 确定
Win11-Test 检测信号 True 确定
Win11-Test 键值对交换 True 确定
Win11-Test 关闭 True 确定
Win11-Test 时间同步 True 确定
Win11-Test VSS True 确定
关键字段: 来宾服务接口 必须为 True。
如果为 False,执行启用命令:
Enable-VMIntegrationService -VMName "Win11-Test" -Name "来宾服务接口"
注意: 中文系统下服务名称为
来宾服务接口,英文系统下为Guest Service Interface。如果名称不匹配会报错找不到具有给定名称的集成组件。
1.3 确认虚拟机内目标路径存在
常见坑点: 虚拟机可能只有 C: 盘,没有 D: 盘。
如果目标路径不存在,Copy-VMFile 会报 0x80070005(拒绝访问)。
在虚拟机内确认可用路径:
- 桌面:
C:\Users\admin\Desktop\ - 下载文件夹:
C:\Users\admin\Downloads\ - C 盘根目录:
C:\
二、方案一:Copy-VMFile(不依赖网络,最稳定)
2.1 基础语法
Copy-VMFile -Name "虚拟机名称" `
-SourcePath "宿主机源文件完整路径" `
-DestinationPath "虚拟机目标完整路径" `
-CreateFullPath `
-FileSource Host
| 参数 | 说明 |
|---|---|
-Name |
虚拟机名称(通过 Get-VM 查询) |
-SourcePath |
宿主机上要复制的文件完整路径 |
-DestinationPath |
虚拟机内接收文件的完整路径(必须存在) |
-CreateFullPath |
如果目标目录不存在,自动创建(建议始终加上) |
-FileSource Host |
表示文件来源是宿主机(Host → Guest) |
2.2 实战示例
示例 1:宿主机 D 盘 → 虚拟机桌面
Copy-VMFile -Name "Win11-Test" `
-SourcePath "D:\v2-94b3075d161d5396ffe60ce36320369d_r.jpg" `
-DestinationPath "C:\Users\admin\Desktop\v2-94b3075d161d5396ffe60ce36320369d_r.jpg" `
-CreateFullPath `
-FileSource Host
示例 2:宿主机 D 盘 → 虚拟机 C 盘根目录
Copy-VMFile -Name "Win11-Test" `
-SourcePath "D:\v2-94b3075d161d5396ffe60ce36320369d_r.jpg" `
-DestinationPath "C:\v2-94b3075d161d5396ffe60ce36320369d_r.jpg" `
-CreateFullPath `
-FileSource Host
示例 3:宿主机文件夹批量复制(传整个文件夹需先压缩)
# 先压缩
Compress-Archive -Path "D:\MyFolder\*" -DestinationPath "D:\MyFolder.zip"
# 再复制到虚拟机
Copy-VMFile -Name "Win11-Test" `
-SourcePath "D:\MyFolder.zip" `
-DestinationPath "C:\Users\admin\Desktop\MyFolder.zip" `
-CreateFullPath `
-FileSource Host
2.3 Copy-VMFile 常见问题与错误码速查
错误:0x80070005 拒绝访问
原因:
- 虚拟机内目标路径不存在(如 VM 没有 D 盘却写到了
D:\) - 来宾服务接口未启用
- 目标目录没有写入权限
解决:
- 确认 VM 内实际存在的盘符和路径
- 确认
来宾服务接口已启用且状态为True - 尝试复制到
C:\Users\admin\Desktop\等用户有权限的目录
错误:0x80070050 文件已存在
原因: 目标路径已存在同名文件,Copy-VMFile 默认不会覆盖。
解决:
- 先删除虚拟机内的旧文件,再执行复制
- 或者修改目标文件名:
-DestinationPath "C:\Users\admin\Desktop\v2_new.jpg"
错误:找不到具有给定名称的集成组件
原因: 系统语言不同导致服务名称不匹配。
解决:
- 中文系统用:
来宾服务接口 - 英文系统用:
Guest Service Interface - 如果不确定,先执行
Get-VMIntegrationService -VMName "Win11-Test"查看完整列表
错误:无法启动将文件复制到来宾的操作: Guest services are not enabled
原因: 虽然启用了来宾服务接口,但虚拟机内对应的服务进程没有运行,或者需要重启 VM 才能生效。
解决:
# 重启虚拟机
Stop-VM -Name "Win11-Test" -Force
Start-VM -Name "Win11-Test"
# 重启后再执行 Copy-VMFile
三、方案二:SMB 网络共享(适合频繁双向传输)
3.1 宿主机端配置
步骤 1:创建共享文件夹
# 创建目录
New-Item -ItemType Directory -Path "D:\VMShare" -Force
# 创建共享(Everyone 完全访问,或指定用户)
New-SmbShare -Name "VMShare" -Path "D:\VMShare" -FullAccess "Everyone"
# 确认共享已创建
Get-SmbShare | Where Name -eq "VMShare"
如果提示"名称已经共享",说明之前已创建过,直接用即可。
步骤 2:防火墙放行 SMB 端口
New-NetFirewallRule -DisplayName "SMB-VMShare" -Direction Inbound -Protocol TCP -LocalPort 445 -Action Allow
必须执行此步骤,否则 Windows 默认会阻止外部设备访问 SMB 共享。
3.2 虚拟机端配置(关键:固定静态 IP)
核心问题: Hyper-V 外部网络交换机会让 VM 和宿主机竞争同一个 DHCP 池的 IP,导致 IP 冲突,SMB 无法访问。
解决方法: 给 VM 手动设置静态 IP,避开宿主机 IP。
操作步骤(在 VM 内操作)
- 右键任务栏网络图标 → 网络和 Internet 设置
- 点击 以太网 → IP 分配 旁边的 编辑
- 选择 手动 → 打开 IPv4
- 填写以下内容:
| 项目 | 值 |
|---|---|
| IP 地址 | 192.168.188.100(避开宿主机 IP,如 192.168.188.76) |
| 子网掩码 | 255.255.255.0 |
| 网关 | 192.168.188.1(与宿主机网关一致) |
| 首选 DNS | 192.168.188.1 |
| 备用 DNS | 8.8.8.8(可选) |
- 点击 保存
验证网络连通性
在 VM 的 cmd 里执行:
ipconfig | findstr "IPv4"
预期输出:
IPv4 地址 . . . . . . . . . . . . : 192.168.188.100
然后测试与宿主机连通:
ping 192.168.188.76
预期输出:
来自 192.168.188.76 的回复: 字节=32 时间<1ms TTL=128
3.3 访问共享文件夹
在 VM 里按 Win + R,输入:
\\192.168.188.76\VMShare
注意:IP 地址替换为你宿主机的实际 IP(通过
ipconfig在宿主机查询)。
首次访问会弹出凭据输入框:
- 用户名:宿主机登录用户名(如
admin) - 密码:宿主机登录密码
- 记住我的凭据:建议勾选,以后无需重复输入
登录成功后,就能像操作本地文件夹一样复制粘贴文件。
3.4 SMB 共享常见问题
问题 1:"Windows 无法访问" 网络错误
原因排查:
- IP 冲突:VM 和宿主机用了同一个 IP → 按 3.2 节给 VM 设静态 IP
- 防火墙拦截:宿主机未放行 445 端口 → 按 3.1 节执行防火墙命令
- 网络不通:VM 未获取到 IPv4 地址 → 在 VM 执行
ipconfig /release和ipconfig /renew
问题 2:没有弹出凭据框,直接报错
原因: 可能是 Windows 凭据管理器缓存了错误的凭据。
解决:
在 VM 里打开 控制面板 → 用户账户 → 凭据管理器 → Windows 凭据,删除与 192.168.188.76 相关的条目,然后重新访问。
四、方案三:增强会话模式 + 剪贴板/驱动器重定向(适合小文件)
- 在 Hyper-V 连接窗口顶部菜单,点击 查看(V) → 增强会话(E),确保勾选
- 在宿主机上复制文件
- 在 VM 里直接粘贴(Ctrl + V)
这种方式走的是 Hyper-V 剪贴板通道,不依赖网络,但只适合小文件(大文件可能卡死或失败)。
五、方案四:虚拟机内直接下载(VM 能上网时)
如果 VM 能上网,直接在 VM 内用浏览器下载,或从宿主机搭建临时 HTTP 服务器:
# 宿主机:用 Python 临时启动文件服务器
python -m http.server 8000 --directory "D:\"
然后在 VM 浏览器访问 http://宿主机IP:8000/ 下载文件。
六、命令速查表
| 需求 | 命令 |
|---|---|
| 查看所有 VM | Get-VM | Select Name, State |
| 查看 VM 集成服务 | Get-VMIntegrationService -VMName "Win11-Test" |
| 启用来宾服务 | Enable-VMIntegrationService -VMName "Win11-Test" -Name "来宾服务接口" |
| 宿主机 → VM 传文件 | Copy-VMFile -Name "Win11-Test" -SourcePath "宿主机路径" -DestinationPath "VM路径" -CreateFullPath -FileSource Host |
| 创建共享文件夹 | New-SmbShare -Name "VMShare" -Path "D:\VMShare" -FullAccess "Everyone" |
| 放行 SMB 防火墙 | New-NetFirewallRule -DisplayName "SMB-VMShare" -Direction Inbound -Protocol TCP -LocalPort 445 -Action Allow |
| 测试 SMB 端口 | Test-NetConnection -ComputerName 192.168.188.76 -Port 445 |
| 重启 VM | Stop-VM -Name "Win11-Test" -Force; Start-VM -Name "Win11-Test" |
七、最佳实践建议
- 传文件前总是先确认 VM 内目标路径存在,避免
0x80070005 - 首次配置时把
来宾服务接口启用,后续 Copy-VMFile 无需重复操作 - 小文件/临时传输用
Copy-VMFile,不依赖网络,最省事 - 频繁双向传输用 SMB 共享,但务必给 VM 设置静态 IP,避免 DHCP 冲突
- 文件夹传输先压缩成
.zip,Hyper-V 的Copy-VMFile不支持递归复制目录 - SMB 共享必须放行防火墙 445 端口,否则会被 Windows 默认拦截
八、方案对比总结
| 方案 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| Copy-VMFile | 不依赖网络、不依赖 IP、稳定 | 只能单向、大文件速度一般 | 临时传文件、脚本自动化 |
| SMB 共享 | 双向传输、像本地文件夹操作、速度快 | 需要配置静态 IP、防火墙放行 | 频繁传文件、大文件 |
| 剪贴板重定向 | 无需配置、即拷即贴 | 只适合小文件、大文件易失败 | 偶尔传小文件 |
| HTTP 下载 | 无需 Hyper-V 配置 | 需要 VM 能上网、临时搭建 | VM 有浏览器时 |
文档更新于:2026-07-15
适用环境:Windows 10/11 + Hyper-V + PowerShell 5.1+

浙公网安备 33010602011771号