开发者

PowerShell - How do I call a cmdlet in a function when overriding that cmdlet's name with the same name as the function?

开发者 https://www.devze.com 2023-02-22 20:00 出处:网络
So I have a cmdlet named update-name that I have no access to change. I have created a function named update-name (the same name as the cmdlet).How do I call the cmdlet from the function with the sam

So I have a cmdlet named update-name that I have no access to change.

I have created a function named update-name (the same name as the cmdlet). How do I call the cmdlet from the function with the same name?

I've tried a few things and none of them seem to work.

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

There is a way to do it when it is just functions:

$unBackup = 'DefaultUpdateName'
if(!(Test-Path Function:\$unBackup)) {
    Rename-Item Function:\Update-Name $unBac开发者_运维百科kup
}

function update-name {
  & $unName
}

Unfortunately that doesn't work if it is a CmdLet.


You the cmdlet's module name to disambiguate the names:

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

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

PS> Microsoft.PowerShell.Management\Start-Process Notepad


This will do the trick as well - thanks Keith Dahlby! http://twitter.com/dahlbyk/status/55341994817503232

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

function update-name {
  & $unName
}


Can you use a proxy function?

0

精彩评论

暂无评论...
验证码 换一张
取 消