我可以覆盖此命令吗?我想在 Powershell 中执行“Get-ChildItem”命令时完成自己的工作。
答案1
是的,您可以覆盖Get-ChildItem
Powershell 中的任何其他 cmdlet。
将您的函数命名为相同
如果您在同一范围内创建同名的函数,则将使用您的函数。
例子:
Function Get-ChildItem {
[CmdletBinding()]
param(
# Simulate the parameters here
)
# ... do stuff
}
使用别名
创建您自己的函数,然后为该函数创建一个别名,其名称与您想要覆盖的 cmdlet 相同。
例子:
Function My-GetChildItem {
[CmdletBinding()]
param(
# Simulate the parameters here
)
# ... do stuff
}
New-Alias -Name 'Get-ChildItem' -Value 'My-GetChildItem' -Scope Global
这种方式很好,因为它更容易测试你的函数而无需破坏内置函数,并且你可以控制何时在代码中覆盖或不覆盖 cmdlet。
要删除别名:
Remove-Item 'Alias:\Get-ChildItem' -Force
了解命令优先级
关于命令优先权列出不同类型的命令的解释顺序:
如果不指定路径,Windows PowerShell 在运行命令时将使用以下优先顺序:
- 别名
- 功能
- 命令
- 本机 Windows 命令