通过FTP和使用powershell复制文件

通过FTP和使用powershell复制文件,powershell,jenkins,ftp,Powershell,Jenkins,Ftp,我使用jenkins实现CI,并成功地将文件发布到构建服务器。 但是,部署到App Server不起作用,因为FTP插件只是复制文件夹,而不是文件。 因此,我正在编写一个powershell脚本,通过FTP复制文件 到目前为止,我在谷歌的帮助下写下了这篇文章: ## Automate FTP uploads ## Go to destination cd C:\TrashFolder $location = Get-Location "We are here: $location" ## Get

我使用jenkins实现CI,并成功地将文件发布到构建服务器。 但是,部署到App Server不起作用,因为FTP插件只是复制文件夹,而不是文件。 因此,我正在编写一个powershell脚本,通过FTP复制文件

到目前为止,我在谷歌的帮助下写下了这篇文章:

## Automate FTP uploads
## Go to destination
cd C:\TrashFolder
$location = Get-Location
"We are here: $location"
## Get files
$files = Get-ChildItem -recurse   
## Get ftp object
$ftp_client = New-Object System.Net.WebClient
$ftp_address = "ftp://MyUserName:MyPassword@ftp://IPAddress"
## Make uploads
foreach($file in $files)
  {

    $directory = "";
    $source = $file.DirectoryName + "\" + $file;
    if ($File.DirectoryName.Length -gt 0)
     {
        $directory = $file.DirectoryName.Replace($Location,"")
     }
   $Directory += "/";
   $FtpCommand = $ftp_address + $directory + $file

   $uri = New-Object System.Uri($FtpCommand)
   "Command is " + $uri + " file is $source"
    $ftp_client.UploadFile($uri, $source)
 }
但是我得到了这个例外

使用“2”参数调用“UploadFile”时出现异常:“无法解析远程名称:'ftp'”
在C:\DeployScripts\FileUpload.ps1:26 char:5
+$ftp_client.UploadFile($uri,$source)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:)[],MethodInvocationException
+FullyQualifiedErrorId:WebException


我们将不胜感激。TIA

看来$ftp地址字符串需要先进行一些修复

"ftp://MyUserName:MyPassword@server"
例如:

"ftp://Nick:MyPassword@myftpserver.net"

服务器IP/名称前面不应该有第二个ftp://文件。查看这是否有帮助

地址解析似乎有错误。尝试ping$ftp\u address我已经用建议的更正测试了你的代码,现在对我有效,你能用你正在使用的更新代码修改你的问题吗?如果错误消息已更改。
Exception调用带有“2”参数的“UploadFile”:“WebClient请求期间发生异常。”在C:\DeployScripts\FileUpload.ps1:26 char:5+$ftp\u client.UploadFile($uri,$source)+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~类别信息:未指定:(:)[,MethodInvocationException+FullyQualifiedErrorId:WebException
我遇到的问题是用户名中有反斜杠“\”我在URI解析中遇到了一个错误。好的,这就是问题2,我用谷歌搜索了它。显然,您需要通过添加第二个反斜杠来避开用户名中的反斜杠,以便\变成\\尝试使我的用户名没有反斜杠。URI的值为