Вот несколько различных подходов для обработки этого:
захватить вывод сценария .cmd:
$output = & external.cmd # saves foo to $output so it isn't returned from the function
перенаправлениевывод на нуль (выбросить)
& external.cmd | Out-Null # throws stdout away
перенаправить его в файл
& external.cmd | Out-File filename.txt
игнорировать его в вызывающейпропуская его в массиве объектов, возвращаемых функцией
$val = a
echo $val[1] #prints second object returned from function a (foo is object 1... $val[0])
В PowerShell любое выходное значение, которое ваш код не захватывает, возвращается вызывающей стороне (включаястандартный вывод, стандартный вывод и т. д.).Таким образом, вам нужно захватить или передать это по каналу, который не возвращает значение, или вы получите объект [] в качестве возвращаемого значения из функции.
Ключевое слово return
действительнопросто для наглядности и немедленного выхода из блока скриптов в PowerShell.Нечто подобное будет работать (не дословно, а просто чтобы дать вам идею):
function foo()
{
"a"
"b"
"c"
}
PS> $bar = foo
PS> $bar.gettype()
System.Object[]
PS> $bar
a
b
c
function foobar()
{
"a"
return "b"
"c"
}
PS> $myVar = foobar
PS> $myVar
a
b