9

所以我有一个名为 update-name 的 cmdlet,我无权更改。

我创建了一个名为 update-name 的函数(与 cmdlet 同名)。如何从具有相同名称的函数中调用 cmdlet?

我已经尝试了一些东西,但它们似乎都不起作用。

function update-name {
param([string] something)
  #call cmdlet update-name here
}

当它只是功能时,有一种方法可以做到:

$unBackup = 'DefaultUpdateName'
if(!(Test-Path Function:\$unBackup)) {
    Rename-Item Function:\Update-Name $unBackup
}

function update-name {
  & $unName
}

不幸的是,如果它是 CmdLet,这将不起作用。

4

3 回答 3

13

您可以使用 cmdlet 的模块名称来消除名称的歧义:

PS> Get-Command Start-Process | Format-Table ModuleName

ModuleName
----------
Microsoft.PowerShell.Management

PS> Microsoft.PowerShell.Management\Start-Process Notepad
于 2011-04-05T19:26:56.450 回答
6

这也可以解决问题 - 感谢 Keith Dahlby!http://twitter.com/dahlbyk/status/55341994817503232

$unName=Get-Command 'Update-Name' -CommandType Cmdlet;

function update-name {
  & $unName
}
于 2011-04-05T19:38:12.780 回答
1

可以使用代理功能吗?

于 2011-04-05T18:57:57.947 回答