Primero un poco de fondo.Capturar la salida EXE en PowerShell
Me han encomendado encriptar archivos con un script de Powershell usando GPG (gnupg.org). El exe específico que estoy llamando es simplemente gpg.exe. Me gustaría capturar la salida cada vez que ejecuto un comando.
Por ejemplo, me importa una clave pública en PowerShell de la siguiente manera:
& $gpgLocation --import "key.txt"
$ gpgLocation es simplemente la ubicación del archivo de gpg.exe (por defecto es "C: \ Archivos de programa \ GNU \ GnuPG \ gpg .exe"
toda Mi problema aquí es que si lo intento:
& $gpgLocation --import "key.txt" | out-file gpgout.txt
Todo lo que consigo es un archivo de 1 kb, apropiadamente llamado, pero es completamente en blanco he intentado varias banderas tanto para exterior. archivo solo para ver si me encontraba con un capricho
También he intentado enviar el comando para el código (y la captura de la salida con el habitual fuera de archivos, 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();
¿Alguna idea? ¡Estoy desesperado!
+1 para el último fragmento de código, lo que anula la funcionalidad por defecto Puesta en proceso de cualquiera de comer hasta la llamada de salida del proceso, o escribir en un archivo (pero no a la salida estándar) –