Powershell函数优先命令


支持所有版本。

函数执行将总会优先于命令,如果两个名称相同,则函数执行会优先于内置命令。

下面演示函数改变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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

发表评论

邮箱地址不会被公开。 必填项已用*标注