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

如何编写PowerShell脚本从文件服务器复制最新文件到本地?

修复你的PowerShell文件复制脚本

嘿,我帮你梳理下现有脚本里的问题,再给你一个能正常运行的修正版本:

先说说原脚本里的几个小坑:

  • 变量名不匹配:你定义了本地目标路径变量$Path,但在Copy-Item里误用了$LocalPath,这会导致脚本找不到目标位置
  • Copy-Item参数格式错误:不需要用大括号{}包裹路径,直接用字符串拼接或变量组合即可
  • 网络共享路径格式问题:网络共享的正确写法是\\IP地址\共享名,如果是访问磁盘的隐藏共享,要加$(比如D盘的隐藏共享是D$),所以你的远程路径应该写成\\IP_address\D$\Interfaces\(如果Interfaces是D盘下的文件夹)
  • 凭据未生效:你定义了用户名和密码,但没把它们应用到共享访问里,直接复制大概率会遇到权限问题

修正后的完整脚本(带详细注释)

# 定义网络共享路径:如果Interfaces文件夹是单独共享的,就改成\\IP_address\Interfaces\
[String]$RemoteSharePath = "\\IP_address\D$\Interfaces\"
# 生成带当日日期的目标文件名
[String]$FileName = "MK." + (Get-Date).ToString("ddMMyy") + ".tar.gz"
# 本地存储文件的目标文件夹
[String]$LocalDestinationPath = "C:\Localfolder"
# 访问远程共享的账号信息
[String]$Username = "admin"
[String]$Password = "Admin123"

# 将明文密码转换为PowerShell认可的安全字符串
$SecurePassword = ConvertTo-SecureString $Password -AsPlainText -Force
# 创建完整的凭据对象
$Credential = New-Object System.Management.Automation.PSCredential ($Username, $SecurePassword)

# 用Join-Path拼接远程文件路径,避免手动加斜杠出现的格式问题
$RemoteFilePath = Join-Path -Path $RemoteSharePath -ChildPath $FileName

# 执行文件复制,传入凭据确保权限,-Force参数会覆盖本地同名文件(不需要可删除)
Copy-Item -Path $RemoteFilePath -Destination $LocalDestinationPath -Credential $Credential -Force

额外小提示:

  • 如果你的远程共享是单独共享的Interfaces文件夹(不是直接访问D盘),记得把$RemoteSharePath改成\\IP_address\Interfaces\
  • 要是不想覆盖本地已有文件,去掉Copy-Item里的-Force参数就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:43:20