Сначала немного фона.
Мне поручили шифровать файлы с помощью Powershell script с помощью GPG (gnupg.org). Конкретный exe, который я вызываю, просто gpg.exe. Я хотел бы захватить вывод всякий раз, когда я выполняю команду.
Например, я импортирую открытый ключ в powershell следующим образом:
& $gpgLocation --import "key.txt"
$gpgLocation - это просто расположение файла gpg.exe(по умолчанию это "C:\Program Files\GNU\GnuPG\gpg.exe"
Вся моя проблема здесь в том, что если я попробую:
& $gpgLocation --import "key.txt" | out-file gpgout.txt
Все, что я получаю, это 1kb файл, названный соответствующим образом, но он ПОЛНОСТЬЮ пустой. Я попробовал несколько флагов для out-file, чтобы убедиться, что я запутался в причуде.
Я также попытался отправить команду на этот код (и захват вывода с обычным файлом и т.д.):
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();
Любые идеи? Я в отчаянии!