我正在玩代理功能,我想完全理解我正在查看的所有代码。
鉴于此:
$MetaData = New-Object System.Management.Automation.CommandMetaData
(Get-Command Get-ChildItem)
[System.Management.Automation.ProxyCommand]::Create($MetaData)
以下是我不明白的输出代码片段:
$wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand('Get-ChildItem',
[System.Management.Automation.CommandTypes]::Cmdlet)
$ ExecutionContext.InvokeCommand.GetCommand()和 Get-Command 之间有什么不同?
答案 0 :(得分:1)
我的信念(纯粹的推测)是,这更加可靠/明确。
cmldet Get-Command
内部可能会调用$ExecutionContext.InvokeCommand.GetCommand()
。
可以使用同名的另一个cmdlet或函数或别名覆盖cmdlet,该cmdlet优先于它。
答案 1 :(得分:1)
我猜这使您能够指定上下文项,例如仅在进行基于上下文的调用时应用的环境变量。我相信Get-Command在当前的全局+用户上下文中执行。