7zip - Vergebenes Passwort wird nicht uebergeben
Moin,
ich mache mit folgendem Script privat Backups von verschiedenen Folders.
Das funktioniert auch wunderbar. Jetzt moechte ich diese erstellten Dateinen jedoch jeweils mit einem Passwort versehen. Dazu gebe ich ich PowerShell folgenden Befehl ein.
oder
Wenn ich dann aber das Script so veraendere dass das Passwort aus dem File C:\Backup\passkey.txt gelesen wird
und dann das Passwort in dem Process der Archivierung uebernommen wird
dann erstellt er mir das Archiv. Wenn ich dann aber das Archiv zum Test manuell mit 7zip entpacke und nach dem Passwort gefragt werde, dann ist das Passwort immer falsch.
Wo liegt bei mir der Fehler ?
ich mache mit folgendem Script privat Backups von verschiedenen Folders.
# Define folders
$7zipPath = "$env:ProgramFiles\7-Zip\7z.exe"
$SourceFolder = "C:\Group Drives\ABC\XYZ\"
$DestFolder = "C:\Staging\A\"
$FileName = "A_Backup_" + (Get-Date –format "yyyyMMdd_HHmmss") + ".7z"
$Archive = $Destfolder+$FileName
$FinalDestFolder = "Y:\Backups\A\"
$FileEnding = "*.7z"
Set-Alias 7z $7zipPath
# Build archive for today
7z a -t7z -mmt=8 -mx=9 -mfb=64 -md=32m -ms=on $Archive $SourceFolder
# Move archived file to backup destination
Move-Item -Path $Archive -Destination $FinalDestFolder
# Delete old files
$n =5
$items = Get-ChildItem "Y:\Backups\A\*.7z"
$items |
Sort-Object Name -Descending |
Select-Object -Last ($items.count - $n) |
Foreach-Object { Remove-Item $_ }
Das funktioniert auch wunderbar. Jetzt moechte ich diese erstellten Dateinen jedoch jeweils mit einem Passwort versehen. Dazu gebe ich ich PowerShell folgenden Befehl ein.
Read-Host "AbCdEfG1357924680" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Backup\passkey.txt
ConvertTo-SecureString "AbCdEfG1357924680" -AsPlainText -Force | ConvertFrom-SecureString | Set-Content "C:\Backup\passkey.txt"
$pass = Get-Content "C:\Backup\passkey.txt" | ConvertTo-SecureString
7z a -t7z -p$pass -mmt=8 -mx=9 -mfb=64 -md=32m -ms=on $Archive $SourceFolder
Wo liegt bei mir der Fehler ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 648139
Url: https://administrator.de/contentid/648139
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
2 Kommentare
Neuester Kommentar
Wo liegt bei mir der Fehler ?
Dein Fehler ist das du das du ein Object vom Typ SecureString an 7Zip übergibst und kein Plaintext Passwort das du ja auf der Kommandozeile benötugst, du musst den SecureString also erst zu Plaintext wandeln und dann übergebenhttps://stackoverflow.com/questions/28352141/convert-a-secure-string-to- ...
$SecurePassword = gc 'd:\datei.txt' | ConvertTo-SecureString
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecurePassword)
$UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
$UnsecurePassword
Beispielszenario:
Wenn man also versuchen würde das obige Skript mit dem System-Account in der Aufgabenplanung laufen zu lassen obwohl man den SecureString mit dem eigenen Account erstellt hat würde das kläglich scheitern wenn man keinen festen Salt benutzt.
Gruß j.