我可以覆盖这个命令吗?我想在 Powershell 中执行“Get-ChildItem”命令时做我自己的工作。
是的,您可以Get-ChildItem
在 Powershell 中覆盖或任何其他 cmdlet。
如果你在同一个作用域中创建一个同名的函数,你的将被使用。
例子:
Function Get-ChildItem {
[CmdletBinding()]
param(
# Simulate the parameters here
)
# ... do stuff
}
Run Code Online (Sandbox Code Playgroud)
创建您自己的函数,然后为该函数创建一个别名,该别名与您要覆盖的 cmdlet 同名。
例子:
Function My-GetChildItem {
[CmdletBinding()]
param(
# Simulate the parameters here
)
# ... do stuff
}
New-Alias -Name 'Get-ChildItem' -Value 'My-GetChildItem' -Scope Global
Run Code Online (Sandbox Code Playgroud)
这种方式很好,因为它可以更轻松地测试您的函数,而无需踩踏内置函数,并且您可以控制 cmdlet 何时被覆盖或不在您的代码中被覆盖。
要删除别名:
Remove-Item 'Alias:\Get-ChildItem' -Force
Run Code Online (Sandbox Code Playgroud)
about_Command_Precedence列出了解释不同类型命令的顺序:
如果不指定路径,Windows PowerShell 在运行命令时将使用以下优先顺序:
- 别名
- 功能
- Cmdlet
- 本机 Windows 命令
归档时间: |
|
查看次数: |
1982 次 |
最近记录: |