shannra666
Goto Top

Powershell eine Pfadangabe aufbereiten

Hallo zusammen,

seit 2 Tagen bastele ich an einem Script, welches ein bestimmtes Archiv mit 7-zip entpacken soll.

Allerdings bekomme ich es alleine nicht hin. Hier mal das bestehende Script:

# Definiton der Start Variablen
$Zaarc = "Test_datei"  
$Datum = (Get-Date).AddDays(-1) 
$DatumFormatiert = $Datum 
$Datum2 = Get-Date $Datum -Format 'yyyy-MM-dd'   
$Filter = $Zaarc+' ' +$Datum2  
$Source = "c:\test"   
$Target = "E:\databases\"  

# Dateien kopieren
copy-item $source $target -filter *$filter* -force -recurse

# Dateien entpacken
$source_2 = "c:\databases"  
$target_2 = "E:\Datenbanken"  
$extension = ".001"  
$archiv = get-childitem $source_2 | where-object {$_.Extension -eq  ".001"} | select fullname  

$7zip = c:\"program files"\7-zip\7z.exe e $archiv -o$target_2  
Das Problem besteht in der Variable $archiv. Hier sind Leerzeichen in der Pfadangabe.

Nehme ich jetzt den Pfad und schreibe ihn direkt in den Teil, in dem die Datei entpackt werden soll, so funktioniert es, da ich natürlich es in " " setze.

Wie mache ich das jetzt aber mit der Variablen $Archiv. Wie bekomme ich die Powershell dazu die "" auch dort zu verwenden.

Vielen Dank schonmal im vorraus.

Content-Key: 188938

Url: https://administrator.de/contentid/188938

Printed on: April 25, 2024 at 22:04 o'clock

Member: bastla
bastla Aug 01, 2012 at 09:56:10 (UTC)
Goto Top
Hallo shannra666!

Genügt denn nicht
$7zip = c:\"program files"\7-zip\7z.exe e "$archiv" -o$target_2
Was Du dir jedenfalls ansehen könntest: about_Quoting_Rules

Grüße
bastla
Member: shannra666
shannra666 Aug 01, 2012 at 12:24:45 (UTC)
Goto Top
Nein das funktioniert auch nicht. Kann es sein, dass ich "zuviel Informationen" in der Variablen haben?

Die Variable Archiv, gibt folgendes zurück:

FullName
E:\databases\clara-17\Sicherung SQL [KIARCV2] Datenbank Fullbackup [Clara17] 2012-07-29 21;56;37 (Full).7z.001

Kann es sein, dass sich Powershell an dem "Fullname" stört? Wenn ja, wie kann ich sonst den Dateinamen generieren?
Member: Connor1980
Connor1980 Aug 01, 2012 at 13:21:26 (UTC)
Goto Top
Hi,

einfach in Anführungszeichen setzen wird nicht funktionieren, da in $archiv eine Menge von Objekten des MemberType Property dem Namen FullName enthalten sind.
anstatt
$archiv = get-childitem $source_2 | where-object {$_.Extension -eq  ".001"} | select fullname 
ungetestet eher sowas:
get-childitem $source_2 | where-object {$_.Extension -eq  ".001"} | select fullname | foreach {
$7zip = c:\"program files"\7-zip\7z.exe e "`"" + $_.FullName + "`"" -o$target_2
}

Grüße
Member: shannra666
shannra666 Aug 01, 2012 at 14:17:32 (UTC)
Goto Top
Hi,


dankeschön. Ich werde es gleich mal testen.

MFG
Member: shannra666
shannra666 Aug 02, 2012 at 08:01:45 (UTC)
Goto Top
HI,

leider hat das nicht geklappt. Kann man noch auf eine andre Weise, ausser "Select Fullname" den Dateinamen bekommen?

Bin gerade echt ratlos face-sad

MFG
Member: Connor1980
Connor1980 Aug 02, 2012 updated at 08:12:24 (UTC)
Goto Top
Hi,

was hat nicht geklappt? Den code zu Kopieren, die Powershell Console aufzurufen, die Ausgabe anzuzeigen, ... ???
Du kannst mit Get-ItemProperty dir anschauen, was es sonst noch an netten Eigenschaften gibt, z.B. Name, dann hast du nur den Dateinamen ohne Pfad. Get-Help ist übrigens auch ein hilfreicher Befehl (wie der Name schon sagt face-wink ).

Grüße
Member: shannra666
shannra666 Aug 02, 2012 at 08:23:45 (UTC)
Goto Top
Hi,

sorry für meine ungenauen Angaben. Die Powershell bekommt von 7zip zurück, kein Archiv vorhanden. Also erkennt er den Dateinamen nicht korrekt.

Get-Help werde ich jetzt nochmal intensiver benutzen. Problem ist nur manchmal, welches CMDlet muss ich benutzen?

Vielen Dank, werde jetzt mal get-item mir anschauen und dann berichten.
Member: Connor1980
Connor1980 Aug 02, 2012 at 09:03:01 (UTC)
Goto Top
Hi,

Zitat von @shannra666:
sorry für meine ungenauen Angaben.
bei mir brauchst dich nicht zu entschuldigen, eher bei dir selber, du möchtest ja die Hilfe haben ... face-wink

Die Powershell bekommt von 7zip zurück, kein Archiv vorhanden. Also erkennt er den
Dateinamen nicht korrekt.
Hast du überprüft, was genau in der 7Zip-Zeile für ein Pfad steht und mit dem tatsächlichen Pfad verglichen?

Get-Help werde ich jetzt nochmal intensiver benutzen. Problem ist nur manchmal, welches CMDlet muss ich benutzen?

Vielen Dank, werde jetzt mal get-item mir anschauen und dann berichten.

Ja, ein bisschen Eigeninitiative können wir erwarten, wir können von hier aus ja nur raten, *du* sitzt vor dem Rechner und siehst was passiert, nicht wir face-wink

Grüße