Сначала немного фона.
Мне было поручено зашифровать файлы скриптом Powershell с помощью 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
Все, что я получаю, - это файл размером 1 КБ, названный соответствующим образом, но он ПОЛНОСТЬЮ пуст. Я попробовал несколько флагов для 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();
Есть идеи? Я в отчаянии!