2017-10-26 2 views
3

Löschen Der Versuch, lokale Backup-Dateien zu löschen, nachdem sie auf Azure Storage hochgeladen haben, wird die folgende Fehlermeldung:lokale Datei nach dem Hochladen Azure

Get-ChildItem : Cannot find path 'C:\Windows\system32\Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageBlob' because it does not exist.

Wenn Sie den folgenden Code ausführen:

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

Warum schaut es in C: \ Windows * blahblah *?

Wenn ich die Variable $ AzureDir auf dem Bildschirm drucke, sehe ich alle meine Blobs.


Im Grunde ist es wohl offensichtlich, aber was ich will ist, jede Datei in meinem Backup-DIR tun, zu überprüfen und wenn es in Azure vorhanden ist, löschen Sie es, wenn nicht, dann weiter zum Upload Schritt. Ich kann den Rest meines Codes teilen, wenn es sein muss.


Lösung UPDATE:

Dank @OmegaMan, der mir den richtigen Weg zeigte nach unten, konnte ich mein Problem beheben. Hier ist, was ich jetzt benutze. Es ist Radfahren durch 4 ‚Blobs‘ richtig und die Ergebnisse unter Verwendung richtig:

$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

Worauf Windows * build * bist du (Typ "Winver" in Start)? – tambre

+0

@tambre, auf diesem Computer wird Server 2016 Datacenter ausgeführt (v1607, Build 14393.1770). – Ilya

+0

Könnte nutzlos sein Info, aber PS auf diesem Rechner ist: 5.1.14393.1770. – Ilya

Antwort

0

Sie scheinen $AzureDir in einem Fall zu verwenden, um alle blob Infos zu halten, was in Ordnung ist, aber dann $FileInBackup= $AzureDir + $_.Name die Linie scheint zu denken, $AzureDir a Literaler Verzeichnisname.

Es scheint, dass Sie korrigieren müssen, wo das Basisverzeichnis anstelle von $AzureDir in diesen Fällen ist.

+1

Danke @OmegaMan! Das hat mich auf den richtigen Weg gebracht. Ich war in der Lage, mein Skript zu bekommen, um 4 verschiedene Behälter richtig zu überprüfen und durch jeden Dateinamen mit Ihrem Tipp des Korrigierens des Basisverzeichnisses zu laufen. Ich habe meinen ursprünglichen Post mit dem Ergebnis dank Ihres Vorschlags aktualisiert. – Ilya

Verwandte Themen