PowerShell. Как вызвать командлет в функции при переопределении имени этого командлета с тем же именем, что и у функции? - PullRequest
9 голосов
/ 05 апреля 2011

Итак, у меня есть командлет с именем update-name, к которому у меня нет доступа к изменениям.

Я создал функцию с именем update-name (то же имя, что и у командлета).Как вызвать командлет из функции с тем же именем?

Я пробовал несколько вещей, и ни одна из них, похоже, не работает.

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.

Ответы [ 3 ]

13 голосов
/ 05 апреля 2011

Имя модуля командлета для устранения неоднозначности имен:

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

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

PS> Microsoft.PowerShell.Management\Start-Process Notepad
6 голосов
/ 05 апреля 2011

Это тоже поможет - спасибо Кита Далби! http://twitter.com/dahlbyk/status/55341994817503232

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

function update-name {
  & $unName
}
1 голос
/ 05 апреля 2011

Можете ли вы использовать функцию прокси ?

...