如何覆盖Powershell中的“get-childItem”命令?

我可以重写这个命令吗? 当我在Powershell中执行“Get-ChildItem”命令时,我想做我自己的工作。

是的,您可以重写Get-ChildItem或Powershell中的其他cmdlet。

命名您的function相同

如果在同一范围内使用相同名称的函数,则将使用您的函数。

例:

 Function Get-ChildItem { [CmdletBinding()] param( # Simulate the parameters here ) # ... do stuff } 

使用别名

创build您自己的函数,然后为该函数创build一个别名,其名称与要覆盖的cmdlet相同。

例:

 Function My-GetChildItem { [CmdletBinding()] param( # Simulate the parameters here ) # ... do stuff } New-Alias -Name 'Get-ChildItem' -Value 'My-GetChildItem' -Scope Global 

这种方式很好,因为testing你的函数时不用重写内置函数就可以更容易,而且你可以控制cmdlet何时被覆盖或不在代码中。

要删除别名:

 Remove-Item 'Alias:\Get-ChildItem' -Force 

知道命令的优先顺序

about_Command_Precedence列出了解释不同types命令的顺序:

如果不指定path,则Windows PowerShell在运行命令时使用以下优先顺序:

  1. 别号
  2. function
  3. 小命令
  4. 本机Windows命令