系统管理员有时需要将文件从A点传到B点,事实上有很多方法可以做到这一点,比较流行的做法是使用PowerShell FTP脚本,这样管理员可以使用Windows的.NET功能。 使用PowerShell时,Windows管理员可以使用.NET WebClient类。让我们从头开始创建一个功能性PowerShell FTP脚本来下载和上传文件。此脚本将有五个基本任务: 1. 获得输入内容2. 创建WebClient对象3. 创建Credential对象4. 创建统一资源标识符5. 下载/上传文件 第一个任务是收集来自用户的输入内容。
对于输入数据,我们通过图形用户界面可以获得使用FTP服务器所需要的……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属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
相关推荐
-
PowerShell管道应用示例
管理人员可以创建一些功能来支持PowerShell管道的运行,而通过脚本将目标对象传递到整个管道中,同样也可以提升基于文本的Shell质量。
-
如何对Windows Server文件拷贝排错
Server Message Block文件共享已经存在了很长一段时间,一般来说是稳定和可靠的。但是一些管理员发现如果从Windows 7或Windows 8客户端向Windows Server文件共享传输大文件的时候会出现一些古怪的问题。
-
Windows管理员如何学习组策略基础知识
组策略自出现以来并没有太多改变,但对于初学者来说却是一堵难以翻越的城墙。本文介绍如何学习使用组策略来管理用户和计算机。
-
如何在远程服务器上运行PowerShell命令
PowerShell的Invoke-Command和New-PSSession命令可以让管理员轻松管理大量远程服务器。