支持所有版本。
函数执行将总会优先于命令,如果两个名称相同,则函数执行会优先于内置命令。
下面演示函数改变Get-Process:
function Get-Process { 'go away' }
这个结果令人有点惊讶:
PS> Get-Process go away
甚至你限定函数的名字,也是同样的结果:
function Microsoft.PowerShell.Management\Get-Process { 'go away' }
PS> Microsoft.PowerShell.Management\Get-Process -Id $pid go away
同样的方法用在别名上,它的执行等级甚至超过上面例子。
但是有一个方法能确保你执行的命令模块,选择想要的命令如下面方法执行:
$module = Get-Module Microsoft.PowerShell.Management $cmdlet = $module.ExportedCmdlets['Get-Process'] & $cmdlet
或者保证你的脚本没有加载相关配置,没有人能篡改。
原文地址:Functions Always Beat Cmdlets
本文链接: https://www.pstips.net/functions-always-beat-cmdlets.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!