【问题标题】:Delete local file after upload to Azure上传到 Azure 后删除本地文件
【发布时间】:2017-10-27 02:45:25
【问题描述】:

在本地备份文件上传到 Azure 存储后尝试删除,得到以下错误:

Get-ChildItem:找不到路径 'C:\Windows\system32\Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageBlob' 因为它不存在。

运行以下代码时:

$BackupDir= 'C:\BackupDir'
$AzureDir= Get-AzureStorageBlob -Context $context -Container $containername -blob $file.name
Get-ChildItem $AzureDir | ForEach-Object
{
    $FileInBackup= $AzureDir + $_.Name
    If (Test-Path $FileInBackup) {Remove-Item $FileInBackup}
}

为什么它在 C:\Windows*blahblah* 中查找?

如果我将变量 $AzureDir 打印到屏幕上,我会看到我所有的 blob。


基本上,这可能很明显,但我想做的是检查备份 DIR 中的每个文件,如果它存在于 Azure 中,请将其删除,如果不存在,则继续上传步骤。如果需要,我可以分享我的其余代码。


解决方案更新:

感谢@OmegaMan,他为我指明了正确的道路,我得以解决我的问题。这是我现在正在使用的。它正确地循环通过 4 个“blob”并正确使用结果:

$BackupDir = 'C:\BackupDir'
$AzureFiles = Get-AzureStorageBlob -Context $context -Container $containername -blob *.name
foreach ($AzureFile in $AzureFiles)
{
    $FileInBackup = $AzureFile.name
    If (Test-Path $BackupDir\$FileInBackup)
    {
        Remove-Item $FileInBackup
    }
}

【问题讨论】:

  • 您在哪个 Windows build 上(在开始时输入“winver”)?
  • @tambre,这台机器正在运行 Server 2016 Datacenter(v1607,内部版本 14393.1770)。
  • 可能是无用的信息,但是这台机器上的PS是:5.1.14393.1770。

标签: powershell azure azure-storage


【解决方案1】:

您似乎在一个实例中使用 $AzureDir 来保存所有 blob 信息,这很好,但是 $FileInBackup= $AzureDir + $_.Name 行似乎认为 $AzureDir 是一个文字目录名称。

在这些情况下,您似乎需要更正基本目录的位置,而不是 $AzureDir

【讨论】:

  • 谢谢@OmegaMan!这让我走上了正确的道路。我能够让我的脚本正确检查 4 个不同的容器,并使用纠正基本目录的提示遍历每个文件名。感谢您的建议,我已经用结果更新了我原来的帖子。
猜你喜欢
  • 2020-07-27
  • 2023-04-01
  • 2016-08-22
  • 2021-06-05
  • 2012-04-06
  • 2017-06-24
  • 2015-11-29
  • 2015-01-06
  • 2019-02-15
相关资源
最近更新 更多