Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell eine Pfadangabe aufbereiten

Frage Entwicklung Batch & Shell

Mitglied: shannra666

shannra666 (Level 1) - Jetzt verbinden

01.08.2012 um 11:22 Uhr, 3730 Aufrufe, 8 Kommentare

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:

01.
# Definiton der Start Variablen 
02.
$Zaarc = "Test_datei" 
03.
$Datum = (Get-Date).AddDays(-1)  
04.
$DatumFormatiert = $Datum  
05.
$Datum2 = Get-Date $Datum -Format 'yyyy-MM-dd'  
06.
$Filter = $Zaarc+' ' +$Datum2 
07.
$Source = "c:\test"  
08.
$Target = "E:\databases\" 
09.
 
10.
# Dateien kopieren 
11.
copy-item $source $target -filter *$filter* -force -recurse 
12.
 
13.
# Dateien entpacken 
14.
$source_2 = "c:\databases" 
15.
$target_2 = "E:\Datenbanken" 
16.
$extension = ".001" 
17.
$archiv = get-childitem $source_2 | where-object {$_.Extension -eq  ".001"} | select fullname 
18.
 
19.
$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.
Mitglied: bastla
01.08.2012 um 11:56 Uhr
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
Bitte warten ..
Mitglied: shannra666
01.08.2012 um 14:24 Uhr
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?
Bitte warten ..
Mitglied: Connor1980
01.08.2012 um 15:21 Uhr
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
Bitte warten ..
Mitglied: shannra666
01.08.2012 um 16:17 Uhr
Hi,


dankeschön. Ich werde es gleich mal testen.

MFG
Bitte warten ..
Mitglied: shannra666
02.08.2012 um 10:01 Uhr
HI,

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

Bin gerade echt ratlos

MFG
Bitte warten ..
Mitglied: Connor1980
02.08.2012, aktualisiert um 10:12 Uhr
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 ).

Grüße
Bitte warten ..
Mitglied: shannra666
02.08.2012 um 10:23 Uhr
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.
Bitte warten ..
Mitglied: Connor1980
02.08.2012 um 11:03 Uhr
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 ...

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

Grüße
Bitte warten ..
Ähnliche Inhalte
Windows Server
gelöst Core Server 2012R2 - GUI mit Powershell nachinstallieren - korrekte Pfadangabe (2)

Frage von takvorian zum Thema Windows Server ...

Batch & Shell
gelöst Powershell Skript Ordnerinhalt auflisten und per E-Mail verschicken (2)

Frage von xbast1x zum Thema Batch & Shell ...

Administrator.de Feedback
Neuer Bereich Powershell und erweitertes syntax highlighting (4)

Frage von Kraemer zum Thema Administrator.de Feedback ...

Batch & Shell
gelöst Auslesen und Vergleichen Zweiter CSV Dateien Powershell (7)

Frage von Hainoon zum Thema Batch & Shell ...

Neue Wissensbeiträge
Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(2)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(5)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Viren und Trojaner

Neue Magazin Ausgabe: Malware und Angriffe abwehren

Information von Frank zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Systemdateien
Warum System auf "C:" (29)

Frage von DzumoPRO zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Cisco SG200: Auf bestimmtem vLAN bestimmte TCP-Ports sperren (19)

Frage von SarekHL zum Thema LAN, WAN, Wireless ...

Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Cloud-Dienste
gelöst Bitcoins minen über Nacht? (16)

Frage von 1410640014 zum Thema Cloud-Dienste ...