我正在编写一个powershell脚本,该脚本将及时执行,该脚本将及时执行,该脚本将抓住特定目录 子目录的任何内容并将其上传副本上传到FTP服务器。
如果文件已经存在于服务器上,它将覆盖。
如果目录在服务器上不存在,则将创建它。
我已经实现了我需要做的大部分事情,但是如果不存在的话,我就可以陷入子目录的创建。
我拥有的代码虽然还不干净。
function UploadFilesInDirectory($RemoteDestination, $LocalSource) {
$local_files = Get-ChildItem $LocalSource
foreach ($local_file in $local_files)
{
$isDirectory = (Get-Item $local_file.FullName) -is [System.IO.DirectoryInfo]
if ($isDirectory)
{
UploadFilesInDirectory -RemoteDestination "$RemoteDestination" -LocalSource "$LocalSource$local_file"
}
else
{
Write-Host "Uploading $local_file"
$desinationPath = $LocalSource.Replace("$local_backup", "")
$desinationPath = "$remote_connection$desinationPath$local_file".Replace("", "/")
$webclient.UploadFile("$desinationPath", $file.FullName )
}
}
}
任何帮助将不胜感激。
我认为没有使用try
/catch
。
-
您是否需要使用
FtpWebRequest
功能来检查存在,但是您必须使用try
/catch
:
在PowerShell中查看FTP服务器上的文件存在我认为这不是那么糟糕(如果将测试置于功能中(。
-
,或者您需要使用第三方FTP模块/库/汇编/工具。例如。我的 winscp .net组装。这也涵盖了我对
的回答在PowerShell中查看FTP服务器上的文件存在 -
,或者您需要使用诸如
ListDirectory
之类的东西来检索整个父目录列表,解析并查找所关注的目录。那是非常无效的。