上传至Azure后删除本地文件

3
试图在上传到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。
基本上,很明显,我想做的是检查备份目录中的每个文件,如果它存在于Azure中,则删除它,否则继续上传步骤。如果需要,我可以分享我的代码的其余部分。
解决方案更新:
感谢@OmegaMan指引我走向正确的方向,我已经解决了问题。这就是我现在正在使用的。它正常循环处理4个'blobs',并正确使用结果:
$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 版本是哪个(在开始菜单中输入“winver”)? - tambre
@tambre,这台机器正在运行Server 2016数据中心版(v1607,构建14393.1770)。 - Eli
可能是无用的信息,但此计算机上的PS版本为:5.1.14393.1770。 - Eli
1个回答

0

您似乎在一个实例中使用$AzureDir来保存所有blob信息,这是可以的,但是接下来的一行$FileInBackup= $AzureDir + $_.Name似乎认为$AzureDir是一个字面上的目录名。

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


1
谢谢@OmegaMan!你的建议让我找到了正确的方向。我已经能够通过你的提示纠正基础目录,使我的脚本能够正确地检查4个不同的容器并循环遍历每个文件名。感谢你的建议,我已经更新了原始帖子并发布了结果。 - Eli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接