在 PowerShell 中使用 FTP 上传文件
FTP(文件传输协议)是一种标准网络协议,用于在计算机网络上的客户端和服务器之间传输文件。FTP 服务器是一种常见的解决方案,用于促进跨 Internet 的文件传输。
我们可以将文件上传到 FTP 服务器,也可以从 FTP 服务器下载文件。PowerShell 是一个脚本工具,可以自动执行 FTP 上传和下载任务。
本教程将教你使用 PowerShell 将文件上传到 FTP 服务器。
在 PowerShell 中使用 System.Net.WebClient
对象通过 FTP 上传文件
我们可以使用 System.Net.WebClient
对象将文件上传到 FTP 服务器。它从由 URI 标识的任何本地、Intranet 或 Internet 资源发送或接收数据。
首先,我们需要创建一个 System.Net.WebClient
对象的实例并将其分配给一个变量 $WebClient
。New-Object
cmdlet 创建一个 .NET Framework 或 COM 对象实例。
$WebClient = New-Object System.Net.WebClient
现在,让我们指定一个文件和 FTP URI。为服务器使用有效的用户名和密码。因此,用你的 FTP 详细信息替换 $FTP
中的值。
$File = "C:\New\car.png"
$FTP = "ftp://ftp_user:ftp_password@ftp_host/car.png"
之后,创建 System.URI
对象并将其分配给一个变量,如下所示。
$URI = New-Object System.Uri($FTP)
最后一步是使用 UploadFile
方法。然后文件将被上传到 FTP 服务器。
$WebClient.UploadFile($URI, $File)
完整的脚本如下所示。
$WebClient = New-Object System.Net.WebClient
$File = "C:\New\car.png"
$FTP = "ftp://ftp_user:ftp_password@ftp_host/car.png"
$URI = New-Object System.Uri($FTP)
$WebClient.UploadFile($URI, $File)
在 PowerShell 中使用 FtpWebRequest
对象通过 FTP 上传文件
此方法将创建一个 FtpWebRequest
对象的实例,以将文件上传到 PowerShell 中的 FTP 服务器。
首先,定义 FTP 和文件详细信息。
$username = "ftp_user"
$password = "ftp_password"
$local_file = "C:\New\test.txt"
$remote_file = "ftp://ftp_host/test.txt"
然后创建一个 FtpWebRequest
对象并配置它,如下所示。Credentials
属性用于指定连接到 FTP 服务器的凭据。
UseBinary
属性设置一个布尔值来指定文件传输的数据类型。True
表示要传输的数据是 binary
,false
表示要传输的数据是 text
。
此方法使用二进制传输模式传输文件,无需修改或转换。结果,源计算机上的相同文件将被上传到服务器。
$FTPRequest = [System.Net.FtpWebRequest]::Create("$remote_file")
$FTPRequest = [System.Net.FtpWebRequest]$FTPRequest
$FTPRequest.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
$FTPRequest.Credentials = New-Object System.Net.NetworkCredential($username, $password)
$FTPRequest.UseBinary = $true
$FTPRequest.UsePassive = $true
# Read the file for upload
$FileContent = gc -en byte $local_file
$FTPRequest.ContentLength = $FileContent.Length
# Get stream request by bytes
$run = $FTPRequest.GetRequestStream()
$run.Write($FileContent, 0, $FileContent.Length)
# Cleanup
$run.Close()
$run.Dispose()
当使用 FtpWebRequest
对象将文件上传到服务器时,我们必须将文件内容写入调用 GetRequestStream
方法获得的请求流中。
我们必须在发送请求之前写入流并关闭它。
在 PowerShell 中使用 FTP 上传多个文件
有时,我们可能需要将多个文件上传到 FTP 服务器。一个一个地上传文件会花费很多时间。
因此,我们创建了这个 PowerShell 脚本来一次性将多个文件上传到 FTP 服务器。
首先,创建一个 System.Net.WebClient
对象并将其分配给 $WebClient
变量。
$WebClient = New-Object System.Net.WebClient
指定要上传的所有文件所在的目录。
$Dir="C:\New"
然后指定 FTP 服务器的 URI。
$FTP = "ftp://ftp_user:ftp_password@ftp_host/docs/"
之后,使用 foreach
循环对 $Dir
中的每个项目运行命令。以下代码将 $Dir
中的所有 .txt
文件上传到 FTP 服务器 $FTP
。
foreach($item in (Get-ChildItem $Dir "*.txt")){
"Uploading $item..."
$URI = New-Object System.Uri($FTP+$item.Name)
$WebClient.UploadFile($URI, $item.FullName)
}
我们希望本文能帮助你在 PowerShell 中使用 FTP 服务器上传文件。
相关文章
在 Windows PowerShell 中获取命令行参数
发布时间:2024/03/04 浏览次数:358 分类:编程语言
-
本文将解释我们如何使用 PowerShell 的参数函数处理命令行参数,参数如何工作,我们如何使用 PowerShell 参数将值传递给参数,以及定义参数的基本方法是什么。
Windows PowerShell 中的 Base64 编码
发布时间:2024/03/04 浏览次数:332 分类:编程语言
-
本文将展示如何编码和解码 base64 字符串。Windows PowerShell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。
在 Windows PowerShell 中写入输出
发布时间:2024/03/04 浏览次数:259 分类:编程语言
-
本文将向你展示如何在 Windows PowerShell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。
在 Windows PowerShell 中设置 PATH 环境变量
发布时间:2024/03/04 浏览次数:350 分类:编程语言
-
本文将展示在 Windows PowerShell 中设置路径环境变量的正确方法。本文还展示了如何在持久性和非持久性方法中设置变量。
在 Windows PowerShell 中打印环境变量
发布时间:2024/03/04 浏览次数:869 分类:编程语言
-
本文将讨论什么是环境变量以及如何使用多个 Windows PowerShell 命令打印它们。
在 PowerShell 中注释代码
发布时间:2024/03/04 浏览次数:363 分类:编程语言
-
本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。
在 PowerShell 中执行 LDAP 查询
发布时间:2024/03/04 浏览次数:304 分类:编程语言
-
本文将深入了解如何使用 Active Directory 过滤器和 LDAP 过滤器。