无需Remove-Item,能否访问被覆盖的PowerShell别名Write-Host?
无需移除别名执行原始Write-Host的方法
当然可以!当Write-Host被别名覆盖后,不用删除别名也能直接调用原始cmdlet,这里有几种实用的方法:
使用完全限定的cmdlet路径
PowerShell允许通过指定所属模块的前缀来绕过别名,直接定位到原始cmdlet。Write-Host属于Microsoft.PowerShell.Utility模块,所以可以这样写:Microsoft.PowerShell.Utility\Write-Host "这是原始Write-Host的输出内容"这种方式会直接调用模块内的原始cmdlet,完全不受别名的影响。
通过
Get-Command获取原始cmdlet对象并执行
你可以用Get-Command明确指定要获取Cmdlet类型的对象,再用调用操作符&执行它:& (Get-Command Write-Host -CommandType Cmdlet) "用Get-Command调用的原始Write-Host输出"-CommandType Cmdlet参数确保你拿到的是真正的Write-Hostcmdlet,而不是被覆盖的别名。直接调用cmdlet对应的.NET类型
如果你想用更底层的方式,还可以直接调用Write-Host对应的.NET类:& ([Microsoft.PowerShell.Commands.WriteHostCommand]) "通过.NET类型调用的原始输出"这种方式跳过了PowerShell的命令解析层,直接实例化并执行cmdlet类。
这些方法都不需要先移除Write-Host的别名,就能直接使用原始cmdlet的功能。
内容的提问来源于stack exchange,提问作者Samantha
相关产品推荐
相关产品推荐

