pet*_*rot 15 powershell cmdlets function
如果我创建一个简单的Powershell函数,例如
Function Hello {
[CmdletBinding( )]
Param (
[parameter()]
$Name
)
Begin{}
Process{
Write-Output "Hello $Name"
}
End{}
}
Run Code Online (Sandbox Code Playgroud)
然后使用Get-Command列出它Get-Command Hello,cmdlet被列为'CommandType'函数.为什么不将它列为'CommandType'cmdlet?
从模块导出时,我还发现我必须使用FunctionsToExport而不是CmdletsToExport.
它似乎并没有影响功能的使用,我只是好奇他们为什么这样列出.
Ant*_*ace 18
函数和cmdlet之间可能没有太大区别,但这取决于您愿意为编写函数做多少工作.唐·琼斯在TechNet上发表了一篇文章,当时第一篇文章突出强调了其中的一些差异.
这些函数完全用脚本编写,具有与用C#或Visual Basic编写并在Visual Studio中编译的"真实"cmdlet相同的功能.这些高级函数(它们最初在v2开发周期中称为"脚本cmdlet")可帮助您编写更灵活的函数,然后可以与常规cmdlet无缝地一起使用.
...
纯粹的功能和完整的cmdlet之间的真正区别在于cmdlet支持强大的参数绑定.您可以通过简单地描述shell的参数来使用位置参数,命名参数,强制参数,甚至进行基本参数验证检查.
您提供的代码示例已经开始模糊两者之间的界限,允许通过一系列附加参数[CmdletBinding()],并开始描述一个名为的全新参数$Name.例如,您现在Write-Verbose可以在该函数中的任何位置使用,并调用该-Verbose标志以查看这些语句,而无需执行任何其他工作.
从功能上讲,编译的cmdlet或用PowerShell编写的函数的最终结果根本不必非常不同 - 似乎更多的是将编译的cmdlet与脚本函数区分开来.
| 归档时间: |
|
| 查看次数: |
4014 次 |
| 最近记录: |