技巧:使用PowerShell FTP脚本上传和下载文件

日期: 2015-09-22 作者:Adam Bertram翻译:杨旭 来源:TechTarget中国 英文

系统管理员有时需要将文件从A点传到B点,事实上有很多方法可以做到这一点,比较流行的做法是使用PowerShell FTP脚本,这样管理员可以使用Windows的.NET功能。 使用PowerShell时,Windows管理员可以使用.NET WebClient类。让我们从头开始创建一个功能性PowerShell FTP脚本来下载和上传文件。此脚本将有五个基本任务: 1. 获得输入内容2. 创建WebClient对象3. 创建Credential对象4. 创建统一资源标识符5. 下载/上传文件 第一个任务是收集来自用户的输入内容。

对于输入数据,我们通过图形用户界面可以获得使用FTP服务器所需要的……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

系统管理员有时需要将文件从A点传到B点,事实上有很多方法可以做到这一点,比较流行的做法是使用PowerShell FTP脚本,这样管理员可以使用Windows的.NET功能。

使用PowerShell时,Windows管理员可以使用.NET WebClient类。让我们从头开始创建一个功能性PowerShell FTP脚本来下载和上传文件。此脚本将有五个基本任务:

1. 获得输入内容
2. 创建WebClient对象
3. 创建Credential对象
4. 创建统一资源标识符
5. 下载/上传文件

第一个任务是收集来自用户的输入内容。对于输入数据,我们通过图形用户界面可以获得使用FTP服务器所需要的所有功能。这包括用户名、密码、文件名称和FTP服务器的名称。我将把这些作为变量,这样以后如果有需要可以轻松更改。

$UserName = 'myusername'

$Password = 'mypassword'

$LocalFilePath = 'C:myfile.txt'

$RemoteFileName = 'myfile.txt'

$ServerName = 'myftpserver.somedomain.com'

我将所有输入数据输入到变量之中。接下来,我们要实例化一个WebClient对象。

$webclient = New-Object System.Net.WebClient

这个命令提供的对象在稍后的上传或下载文件时会用到。

WebClient对象有一个叫做Credentials的属性,PowerShell通常使用其将用户名和密码传递到FTP服务器。这个Credentials属性需要一个叫做System.Net.NetworkCredential的对象,该对象需要两个参数:用户名和密码。这里使用我们之前分配的用户名和密码,如下:

$webclient.Credentials = New-Object System.Net.NetworkCredential($UserName, $Password)

决定下载或上传文件的位置

现在,我们有了一个WebClient对象以及Credentials属性,接下来必须决定下载或上传文件的位置。不同的选择对应不同的统一资源标识符(URI)。

例如,如果我想从从一个远程FTP服务器上下载一个文件,URI的形式应该是ftp://SERVERNAME/filename.ext。我们将构建一个System.Uri对象,它有一个真实URI参数。然后我们使用$RemoteFileName变量来指定下载FTP服务器的根文件夹。

$uri = New-Object System.Uri(“ftp://$ServerName/$RemoteFileName”)

到目前为止,我们已经为下载FTP文件准备好了所有的先决条件。现在,让我们开始行动吧。下载远程FTP服务器上的文件需要用到DownloadFile方法。DownloadFile有两个参数你需要填充:URI和文件下载路径。

$webclient.DownloadFile($uri, $LocalFilePath)

这一行命令将使用之前指定的用户名和密码连接到FTP服务器,在服务器根目录下查找myfile.txt,然后将其转移到C:位置。

上传文件使用UploadFile()方法。其与下载文件的命令是一模一样的,只是将Upload取代Download。

$webclient.UploadFile($uri, $LocalFilePath)

这样就将C:myfile.txt上传到FTP服务器根目录下。

放入单个PowerShell脚本

现在让我们把上述所有东西包装在一个叫做Move-FtpFile.ps1的独立PowerShell脚本中。

param($Username,$Password,$FilePath,$ServerName,$Action)

$webclient = New-Object System.Net.WebClient

$webclient.Credentials = New-Object System.Net.NetworkCredential($UserName, $Password)

$file = Get-Item -Path $FilePath

$uri = New-Object System.Uri(“ftp://$ServerName/$($file.Name)”)

if ($Action -eq ‘Download’) {

$webclient.DownloadFile($uri, $FilePath)

} elseif ($Action -eq ‘Upload’) {

$webclient.UploadFile($uri, $FilePath)

}

唯一的变化是我将输入内容作为参数并增添了$Action参数。$Action参数可以让你的文件下载或上传更加简单。Move-FtpFile.ps1文件如下:

PS> .Move-FtpFile.ps1 -Username ‘myuser’ -Password ‘mypassword’ -FilePath ‘C:myfile.txt’ -ServerName ‘myftpserver.somedomain.com’ -Action Download

作者

Adam Bertram
Adam Bertram

自由撰稿人

相关推荐

  • PowerShell管道应用示例

    管理人员可以创建一些功能来支持PowerShell管道的运行,而通过脚本将目标对象传递到整个管道中,同样也可以提升基于文本的Shell质量。

  • 如何对Windows Server文件拷贝排错

    Server Message Block文件共享已经存在了很长一段时间,一般来说是稳定和可靠的。但是一些管理员发现如果从Windows 7或Windows 8客户端向Windows Server文件共享传输大文件的时候会出现一些古怪的问题。

  • Windows管理员如何学习组策略基础知识

    组策略自出现以来并没有太多改变,但对于初学者来说却是一堵难以翻越的城墙。本文介绍如何学习使用组策略来管理用户和计算机。

  • 如何在远程服务器上运行PowerShell命令

    PowerShell的Invoke-Command和New-PSSession命令可以让管理员轻松管理大量远程服务器。