PowerShell: 如何使用PowerShell操作FTP?

本文详述如何使用PowerShell的PSFTP模块进行FTP文件管理,包括连接FTP、上传下载文件、新建删除目录、重命名文件等操作。通过实例演示各个功能的使用方法,为FTP自动化管理提供便利。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1. 前言

2. 遇见PSFTP

3. 初探PSFTP

4. 连接FTP

5. 使用PSFTP进行文件管理

5.1 添加/上传文件 - Add-FTPItem (Send-FTPItem)

 使用举例:

5.2 获取目录下面的文件、子目录 - Get-FTPChildItem

使用举例:

5.3 下载文件 - Get-FTPItem(Receive-FTPItem)

使用举例:

5.4 获取文件大小 - Get-FTPItemSize

使用举例:

5.5 新建目录 - New-FTPItem

使用举例:

5.6 删除文件 - Remove-FTPItem

使用举例:

 5.7 重命名文件或者目录 - Rename-FTPItem(Move-FTPItem)

使用举例: 

5.8 检查文件或者目录是否存在 - Test-FTPItem

使用举例:

6. 总结


1. 前言

之前在【Azure - App Service】如何使用PowerShell一键部署前端代码到微软Azure云的App Service上_码农杰克的博客-CSDN博客

中提到在之前尝试部署前端代码到Azure云上时,曾尝试过使用FTP来操作。但是很不幸没有成功,不过倒是对PowerShell如何操作FTP搞明白了。 所以接下来对PowerShell操作FTP作一番记录,以备后用。

2. 遇见PSFTP

其实PowerShell本身并没了内置对FTP的支持,但是.net里面内置了FTP操作的类。当时在微软官方文档上看到了下面一段示例代码,主要就是演示如何通过PowerShell上传前端代码到Azure 的APP Service 上。PowerShell: Upload files using FTP - Azure App Service | Microsoft DocsLearn how to use Azure PowerShell to automate deployment and management of App Service. This sample shows how to upload files to an app using FTP.https://docs.microsoft.com/en-us/azure/app-service/scripts/powershell-deploy-ftp

$filePath="<Replace with full file path>"
$webappname="mywebapp$(Get-Random)"
$location="West Europe"

# Create a resource group.
New-AzResourceGroup -Name myResourceGroup -Location $location

# Create an App Service plan in `Free` tier.
New-AzAppServicePlan -Name $webappname -Location $location `
-ResourceGroupName myResourceGroup -Tier Free

# Create a web app.
New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname `
-ResourceGroupName myResourceGroup

# Get publishing profile for the web app
$xml = [xml](Get-AzWebAppPublishingProfile -Name $webappname `
-ResourceGroupName myResourceGroup `
-OutputFile null)

# Extract connection information from publishing profile
$username = $xml.SelectNodes("//publishProfile[@publishMethod=`"FTP`"]/@userName").value
$password = $xml.SelectNodes("//publishProfile[@publishMethod=`"FTP`"]/@userPWD").value
$url = $xml.SelectNodes("//publishProfile[@publishMethod=`"FTP`"]/@publishUrl").value

# Upload file 
$file = Get-Item -Path $filePath
$uri = New-Object System.Uri("$url/$($file.Name)")

$request = [System.Net.FtpWebRequest]([System.net.WebRequest]::Create($uri))
$request.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
$request.Credentials = New-Object System.Net.NetworkCredential($username,$password)

# Enable SSL for FTPS. Should be $false if FTP.
$request.EnableSsl = $true;

# Write the file to the request object.
$fileBytes = [System.IO.File]::ReadAllBytes($filePath)
$request.ContentLength = $fileBytes.Length;
$requestStream = $request.GetRequestStream()

try {
    $requestStream.Write($fileBytes, 0, $fileBytes.Length)
}
finally {
    $requestStream.Dispose()
}

Write-Host "Uploading to $($uri.AbsoluteUri)"

try {
    $response = [System.Net.FtpWebResponse]($request.GetResponse())
    Write-Host "Status: $($response.StatusDescription)"
}
finally {
    if ($null -ne $response) {
        $response.Close()
    }
}

这段代码只是C#与PowerShell的混合编程,因为PowerShell本身支持内嵌C#代码,并且在PowerShell中可以直接使用C#库。其中就有一个[System.Net.FtpWebRequest],这个就是.net里内置的FTP操作类。感兴趣的同学请参考下面的连接。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT大厨

技术人,都不易,谢谢大大赏赐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值