上传到Azure后删除本地文件

时间:2017-10-26 14:29:42

标签: powershell azure azure-storage

尝试在将本地备份文件上载到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
    }
}

1 个答案:

答案 0 :(得分:0)

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

在这些情况下,您似乎需要纠正基目录而不是$AzureDir