尝试在将本地备份文件上载到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
}
}
答案 0 :(得分:0)
您似乎在一个实例中使用$AzureDir
来保存所有blob信息,这很好,但行$FileInBackup= $AzureDir + $_.Name
似乎认为$AzureDir
是文字目录名。
在这些情况下,您似乎需要纠正基目录而不是$AzureDir
。