Powershell的函数定义简单,官方的说法是这样的
function Get-Something {
<#
.SYNOPSIS
Describe the function here
.DESCRIPTION
Describe the function in more detail
.EXAMPLE
Give an example of how to use it
.EXAMPLE
Give another example of how to use it
.PARAMETER computername
The computer name to query. Just one.
.PARAMETER logname
The name of a file to write failed computer names to. Defaults to errors.txt.
#>
[CmdletBinding()]
param
(
[Parameter(Mandatory=$True,
ValueFromPipeline=$True,
ValueFromPipelineByPropertyName=$True,
HelpMessage='What computer name would you like to target?')]
[Alias('host')]
[ValidateLength(3,30)]
[string[]]$computername,
[string]$logname = 'errors.txt'
)
begin {
write-verbose "Deleting $logname"
del $logname -ErrorActionSilentlyContinue
}
process {
write-verbose "Beginning process loop"
foreach ($computer in $computername) {
Write-Verbose "Processing $computer"
# use $computer to target a single computer
# create a hashtable with your output info
$info = @{
'info1'=$value1;
'info2'=$value2;
'info3'=$value3;
'info4'=$value4
}
Write-Output (New-Object –TypenamePSObject –Prop $info)
}
}
}
实际在用的过程中,还是有很多种的,不过和Python类似,定义函数的时候,无需指定是否有返回值以及返回值的类型,实际的function body里,有return就是有返回值。
至于值的类型,就比较“随意”了,应该说值的类型是跟着值一起的。
在调用function时,是直接func_name parm1 parm2
如果写成func_name(parm1,parm2)
呵呵 ,那么你就等着看诡异的现象
函数中经常会有一些异常的捕捉,可以使用如下的方式来捕捉
try
{
......
}catch [System.SystemException]
{
.....
Write-Host $_.Exception.Message
break
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。