Ich versuche, Passwort aus Sicherungsstring im Batch zu extrahieren.Passwort aus Sicherungsstring im Stapel extrahieren
Dies ist in PS:
Read-Host "Enter Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Temp\Password.txt"
$pass = Get-Content "C:\Temp\Password.txt" | ConvertTo-SecureString
$stringValue = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($pass));
Es funktioniert wie erwartet.
ich den obigen Code in Batch-Konvertierung am:
powershell -Command "& {Read-Host "Enter Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Temp\Password.txt"}"
powershell -command "& {$pass = Get-Content "C:\Temp\Password.txt" | ConvertTo-SecureString;^
$stringValue = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($pass))}"
FOR /F "usebackq delims=" %v IN (`stringValue`) DO set "d=%v"
echo %d%
Ich bin nicht sicher, ob das, was falsch ist, bekomme ich nur "powershell.exe -encodedCommand $ encodedCommand" auf echo% d% , nicht das Klartext Passwort.
Powershell-Variablen auf magische Weise nicht werden Batch-Variablen. Sie müssen den PowerShell-Code in den Backticks ausführen und das entschlüsselte Kennwort dort ausgeben. –
Ich habe es versucht. Ich bekomme das gleiche Ergebnis. – Prasu
Warum überhaupt eine Batch-Datei verwenden? Verwenden Sie einfach PowerShell und Sie können die meisten schmerzhaften Verrenkungen vermeiden. –