Я пытаюсь отладить сценарий в PowerShell ISE, но я столкнулся с проблемой, когда нормальный вывод строки интерпретируется ISE как ошибка
Мне удалось упростить воспроизведение этой проблемы: я получаю любую версию openssl по адресу https://www.openssl.org/related/binaries.html (я тестировал это с 1.0.2d x86 из связанного репозитория http://slproweb.com/products/Win32OpenSSL.html)
Я открываю Powershell ISE, перехожу туда, где находится exe, и запускаю следующее:
$ErrorActionPreference = "Stop"
$env:OPENSSL_CONF = ((Resolve-Path "openssl.cfg").Path)
&openssl.exe genrsa
Результат красный и начинается так:
openssl.exe : Loading 'screen' into random state - done
At line:1 char:1
+ &C:\Trayport\OpenSsl\openssl.exe genrsa
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Loading 'screen...om state - done:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Generating RSA private key, 2048 bit long modulus
Если я запустил это в обычном командном окне PowerShell, результат будет таким же, но будет белым и не будет считаться ошибкой.
Loading 'screen' into random state - done
Generating RSA private key, 2048 bit long modulus
Я пробовал использовать 2> & 1 или заключить вызов с помощью параметра ErrorPreference (как предлагается в PowerShell ISE выдает ошибку при проверке git), но все равно не работает
try / catching all exception действительно работает, но я бы предпочел этого не делать, если я могу этого избежать.
Я пробовал использовать PowerShell версии 3.0 и 4.0
Изменить: если вы используете $ErrorActionPreference = "SilentlyContinue"
, он заглушает ошибку, но затем вы теряете доступ к выходу, плюс законные проблемы также исчезают