如何使用 Powershell 从 Azure 存储下载 blob 文件并将其保存到 FTP 服务器?

支付宝

我正在尝试访问 PowerShell 中的 blob 文件,并希望将其直接保存到 FTP 服务器。如何才能做到这一点?这可以通过 blob 文件 URL 完成吗?或者我可以以某种方式在 Powershell 内存中创建文件,然后使用 $webclient.UploadFile 将其保存到 FTP 文件夹?

与同一下载相关的另一个问题是,有没有办法只复制文件而不是同时复制子目录?例如,我有一个 blob 文件,如:dataload/files/my_blob_file。当我使用命令 Get-AzureStorageBlobContent -Destination $destination_path 时,它会将文件保存在相同的子文件夹结构中,但是我可以使用自定义路径或删除子文件夹并将其保存为 c:\myfolder\my_blob_file 而不是 c:\myfolder \dataload\files\my_blob_file? 我想在上面的 FTP 服务器中完成这个。

史蒂文李 - MSFT

我正在尝试访问 PowerShell 中的 blob 文件,并希望将其直接保存到 FTP 服务器。

如果您的 FTP 服务器是基于 Windows 的,那么您只需在 FTP 服务器上运行脚本并将 blob 下载到该 FTP 服务器的本地路径中。

这可以通过 blob 文件 URL 完成吗?

命令“Get-AzureStorageBlobContent”不接受 URL 作为参数。这意味着您需要编写代码或脚本来实现这一点。这是我写的一个简单的演示:

$url = "https://accountname.blob.core.windows.net/testcontainer/Test01.txt"
$separator = "://"
$option = [System.StringSplitOptions]::RemoveEmptyEntries
$temp = $url.Split($separator,4,$option)
$Protocol = $temp[0]
$HostName = $temp[1]
$Container = $temp[2]
$BlobName = $temp[3]

或者我可以以某种方式在 Powershell 内存中创建文件,然后使用 $webclient.UploadFile 将其保存到 FTP 文件夹?

即使我们可以实现,将文件存储到 RAM 中也不是一个好主意。正如我上面提到的,如果您的 FTP 服务器是基于 Windows 的,请直接在 FTP 服务器上运行脚本。

如果脚本由于某种原因无法在服务器上运行,那么请尝试共享FTP服务使用的文件夹,并将其映射为将运行脚本的计算机上的网络驱动程序。这样您就可以将文件存储到此网络驱动程序中。

但是我可以改用自定义路径或删除子文件夹并将其保存为 c:\myfolder\my_blob_file 而不是 c:\myfolder\dataload\files\my_blob_file 吗?

当然,只要指定路径和文件名作为 Destination 参数即可:

目的地

注意:实际上,Azure 存储上没有“文件夹”的概念。路径是 blob 名称的一部分。下载 blob 时,可以通过在目标路径中指定文件名来重命名 blob。这样就不会在本地文件夹上创建附加文件夹。

================================================== ========================

更新:

此脚本将作为 Azure 自动化的一部分从 Azure 运行。但是,当我尝试调用 FTP 服务器(当前是我的本地计算机)时,出现“无法连接到远程服务器”错误。

您可能需要Hybrid Runbook Worker来实现您的目标。

Azure 自动化中的 Runbook 无法访问本地数据中心中的资源,因为它们在 Azure 云中运行。Azure 自动化的混合 Runbook Worker 功能允许你在位于数据中心的计算机上运行 Runbook 以管理本地资源。

我使用默认的 21 端口,我也尝试使用我的公共 IP 地址

不建议将您的 FTP 服务器暴露给 Internet。我建议使用混合 Runbook Worker。

另外,如何将我的 blob 文件的内容放入 Powershell 变量中以在脚本中使用它?

据我所知,Get- Azure Storage Blob Content不支持在 RAM 中返回对象。您需要先下载内容,然后使用 Get-Content 获取文件内容。如果您使用混合 Runbook Worker,您将能够在本地存储文件。

================================================== ============================ 更新 2:

我试图了解如何调用任何外部 FTP 服务器(目前在我的机器上用于开发/测试目的,但可能驻留在生产中的任何其他外部服务器上),我必须从 Powershell 脚本中运行它Azure 自动化。所以你的回答是:你可能需要 Hybrid Runbook Worker 来实现你的目标......对我来说不起作用吧?

Hybrid Runbook Worker 适合您。它使事情变得更容易。因为如果您使用混合 Runbook Worker,则 Runbook 将在您的本地计算机上运行。

我可以将 blob 下载到我的本地计算机并将它们上传到公共 FTP 服务器,没有任何问题。

你是说目前没有办法从Azure Powershell Automation从外部FTP服务器上传和下载文件吗?

我没有成功地将 blob 上传到公共 FTP 服务器。当我尝试上传 blob 并且只有具有 blob 名称的空文件上传到 FTP 服务器时发生异常。这可能是权限问题,因为 PowerShell 脚本在沙箱中运行。这就是我说混合 Runbook Worker 使事情变得更容易的原因。

最后,请注意:FTP 以明文形式对用户进行身份验证和传输日期,这可能会导致安全问题。FTPS 和 SFTP 比 FTP 更安全。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用WinSCP从FTP服务器下载特定文件?

来自分类Dev

如何下载FTP服务器的最早文件?

来自分类Dev

如何下载FTP服务器的最早文件?

来自分类Dev

使用bash脚本从ftp服务器下载多个文件

来自分类Dev

如何从Azure Blob存储将文件下载到浏览器

来自分类Dev

如何使用PowerShell的FtpWebRequest类从FTP服务器下载文件名中包含井号/井号'#'的文件

来自分类Dev

如果远程副本在PowerShell中较新,如何将本地文件的使用期限与FTP服务器上的文件进行比较并下载

来自分类Dev

从ftp服务器下载txt文件

来自分类Dev

如何获取存储在Blob存储中的所有文件名并将其保存到表或csv中

来自分类Dev

如何从FTP服务器下载文件,然后在下载完成后自动从服务器删除文件?

来自分类Dev

如何使用Netbeans的FTP客户端从服务器下载新文件

来自分类Dev

从Azure Blob存储下载文件的示例

来自分类Dev

Azure Blob存储下载所有文件

来自分类Dev

Azure Blob存储下载所有文件

来自分类Dev

无法使用Ruby从FTP服务器下载和保存文件

来自分类Dev

将Powershell对象CSV字符串作为文件保存到Azure Blob存储

来自分类Dev

使用PowerShell中的WinSCP .NET程序集从FTP / SFTP服务器上的文件夹集中下载文件和电子邮件结果

来自分类Dev

从FTP服务器下载CSV文件以保存到本地并进行上传

来自分类Dev

如何在浏览器的FTP服务器上下载文件?

来自分类Dev

无法使用 SSIS 从 Azure blob 存储下载页面 blob 类型文件

来自分类Dev

从azure-blob获取图像并将其发送到客户端,而无需使用节点服务器在本地保存

来自分类Dev

如何使用PHP将Azure存储Blob下载为本地文件?

来自分类Dev

如何使用c#在单个请求中从Azure Blob存储下载多个文件?

来自分类Dev

在PowerShell中使用WinSCP .NET程序集监视FTP服务器上的上传文件

来自分类Dev

Azure Powershell - 如何使用“只写”共享访问签名 (SAS) 将文件上传到 Blob 存储?

来自分类Dev

Kotlin-如何下载.mp3文件并将其保存到内部存储

来自分类Dev

使用Azure Function从Azure Blob存储下载文件将返回不同的文件大小

来自分类Dev

如何将文件从FTP服务器下载到Android设备?

来自分类Dev

Laravel 7.如何从服务器(FTP)下载文件?

Related 相关文章

  1. 1

    如何使用WinSCP从FTP服务器下载特定文件?

  2. 2

    如何下载FTP服务器的最早文件?

  3. 3

    如何下载FTP服务器的最早文件?

  4. 4

    使用bash脚本从ftp服务器下载多个文件

  5. 5

    如何从Azure Blob存储将文件下载到浏览器

  6. 6

    如何使用PowerShell的FtpWebRequest类从FTP服务器下载文件名中包含井号/井号'#'的文件

  7. 7

    如果远程副本在PowerShell中较新,如何将本地文件的使用期限与FTP服务器上的文件进行比较并下载

  8. 8

    从ftp服务器下载txt文件

  9. 9

    如何获取存储在Blob存储中的所有文件名并将其保存到表或csv中

  10. 10

    如何从FTP服务器下载文件,然后在下载完成后自动从服务器删除文件?

  11. 11

    如何使用Netbeans的FTP客户端从服务器下载新文件

  12. 12

    从Azure Blob存储下载文件的示例

  13. 13

    Azure Blob存储下载所有文件

  14. 14

    Azure Blob存储下载所有文件

  15. 15

    无法使用Ruby从FTP服务器下载和保存文件

  16. 16

    将Powershell对象CSV字符串作为文件保存到Azure Blob存储

  17. 17

    使用PowerShell中的WinSCP .NET程序集从FTP / SFTP服务器上的文件夹集中下载文件和电子邮件结果

  18. 18

    从FTP服务器下载CSV文件以保存到本地并进行上传

  19. 19

    如何在浏览器的FTP服务器上下载文件?

  20. 20

    无法使用 SSIS 从 Azure blob 存储下载页面 blob 类型文件

  21. 21

    从azure-blob获取图像并将其发送到客户端,而无需使用节点服务器在本地保存

  22. 22

    如何使用PHP将Azure存储Blob下载为本地文件?

  23. 23

    如何使用c#在单个请求中从Azure Blob存储下载多个文件?

  24. 24

    在PowerShell中使用WinSCP .NET程序集监视FTP服务器上的上传文件

  25. 25

    Azure Powershell - 如何使用“只写”共享访问签名 (SAS) 将文件上传到 Blob 存储?

  26. 26

    Kotlin-如何下载.mp3文件并将其保存到内部存储

  27. 27

    使用Azure Function从Azure Blob存储下载文件将返回不同的文件大小

  28. 28

    如何将文件从FTP服务器下载到Android设备?

  29. 29

    Laravel 7.如何从服务器(FTP)下载文件?

热门标签

归档