Я написал несколько скриптов Powershell, которые развертывают программное обеспечение для клиента. Я использовал Write-Host
для вывода большого количества информации, чтобы можно было наблюдать за процессом развертывания, и они вызывали это из одного из своих приложений развертывания, используя Start-Transcript
для захвата этого вывода.
Однако им также необходимо иметь возможность вызывать некоторые из этих сценариев из другого приложения, которое может захватывать только вывод из stdout. Это означает, что Write-Host не будет работать там, поскольку он выводит информацию только на консоль или хост и не направляется на стандартный вывод (верно?)
Я думал, что я мог бы изменить код для использования Write-Out
, за исключением того, что это вызывает другую проблему. Так как я использую функции и поскольку функции в Powershell "возвращают" все , которое отправляется на стандартный вызов вызывающей стороне, которая, вероятно, испортит любой мой код, который получает выходные данные из функции.
Есть ли способ направить вывод на стандартный вывод из функции, не обращаясь к вызывающему коду в качестве вывода самой функции? Вот пример проблемы:
function Test-Output ([int]$number) {
Write-Output "This is a string"
return $number
}
[int]$someNumber = Test-Output 10
$someNumber
Если вы запустите приведенный выше код, вы увидите ошибку, потому что Powershell пытается присвоить «This is a string» целому числу $someNumber
. Если вы измените переменную на string
, то она получит полный вывод функции (это строка 10) и присвоит ее переменной.
Спасибо за любые предложения, которые вы можете дать!