前言:
在自定义 PowerShell
函数时,如何让函数返回值,如何接收返回值,如何让不相干的内容不放到返回值数组中。
PowerShell
函数体中的任何输出,一般来说,都会以返回值的形式返回给函数调用者。多个输出的内容是放到一个返回值数组中的。
比如有如下一个返回值测试的函数,
function
Test
-ReturnValue
{
1
‘Hello
’
return
Get
-Date
}
这个函数定义了三个返回值,调用的效果如下:
PS
> Test
-ReturnValue
1
Hello
Saturday
, November
2, 2013 12:52:13
PS
> $result
= Test
-ReturnValue
PS
> $result
[0]
1
由上面的调用可以看出,直接调用时,将像数组一样,分三行把每一个返回值都输出出来。而我们用一个变更$result
来保存返回值时,我们可以看到函数的返回值是一个数组,从下标 0 开始,0-2 是三个元素的下标。
下面我们说说如果想让函数有一些提示性的输出,但不想让这些个输出被放到函数的返回值中,应该怎么才能实现呢?微软建议我们使用 Write
-Host
或 Write
-Warning
,这两个 cmdlet
输出的内容将被直接显示到 Console
控制台上,而不会进入到返回值数组。
我们把上面的函数略作修改,加入两行提示性输出。
function
Test
-ReturnValue
{
#加一句 Write
-Host
Write
-Host
‘Starting
’ -ForegroundColor
Green
1
‘Hello
’
#再加一个 Write
-Warning
Write
-Warning
‘Almost
done
…’
return
Get
-Date
}
然后看看执行效果,
PS
> Test
-ReturnValue
Starting
1
Hello
WARNING
: Almost
done
…
Saturday
, November
2, 2013 12:54:11
PS
> $result
= Test
-ReturnValue
Starting
WARNING
: Almost
done
…
一次是直接调用,一次是赋值调用,大家看明白其中的区别了吗?Write
-Host
和 Write
-Warning
,什么叫直接输出到控制台!
转载请注明:汇站网 » PowerShell函数返回值