Ein wenig Hintergrund zuerst.Capture EXE-Ausgabe in PowerShell
Ich wurde beauftragt, Dateien mit einem Powershell-Skript mit GPG (gnupg.org) zu verschlüsseln. Die spezifische exe, die ich anrufe, ist einfach gpg.exe. Ich möchte die Ausgabe immer erfassen, wenn ich einen Befehl ausführe.
So importieren ich einen öffentlichen Schlüssel in Powershell wie folgt:
& $gpgLocation --import "key.txt"
$ gpgLocation ist einfach der Speicherort der Datei von gpg.exe (default „C sein: \ Programme \ GNU \ GnuPG \ gpg .exe“
Mein hier ganze Problem ist, dass, wenn ich versuche:
& $gpgLocation --import "key.txt" | out-file gpgout.txt
Alles, was ich bekommen, ist eine 1 kb-Datei, entsprechend benannt, aber es ist völlig leer ich für out- mehrere Fahnen ausprobiert habe. Datei nur um zu sehen wenn ich in eine Eigenart geraten würde.
Ich habe auch versucht, zu diesem Code, um den Befehl zu senden (und die Ausgabe mit der üblichen out-Datei erfassen etc.):
param
(
[string] $processname,
[string] $arguments
)
$processStartInfo = New-Object System.Diagnostics.ProcessStartInfo;
$processStartInfo.FileName = $processname;
$processStartInfo.WorkingDirectory = (Get-Location).Path;
if($arguments) { $processStartInfo.Arguments = $arguments }
$processStartInfo.UseShellExecute = $false;
$processStartInfo.RedirectStandardOutput = $true;
$process = [System.Diagnostics.Process]::Start($processStartInfo);
$process.WaitForExit();
$process.StandardOutput.ReadToEnd();
Irgendwelche Ideen? Ich bin verzweifelt!
+1 für den letzten Code-Schnipsel, die Startprozess Funktionalität von Standardüberschreibt entweder den genannten Prozessausgang zu essen, oder in eine Datei (aber nicht auf der Standardausgabe) Schreiben –