在将本地备份文件上传到Azure存储后尝试删除它们时,出现以下错误:



运行以下代码时:

$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
    }
}

最佳答案

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

看来您需要纠正这些实例中基本目录的位置而不是$AzureDir

10-08 16:37