所以我有一个名为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则不起作用。
答案 0 :(得分:13)
您可以使用cmdlet的模块名称来消除名称歧义:
PS> Get-Command Start-Process | Format-Table ModuleName
ModuleName
----------
Microsoft.PowerShell.Management
PS> Microsoft.PowerShell.Management\Start-Process Notepad
答案 1 :(得分:5)
这也可以解决问题 - 谢谢Keith Dahlby! http://twitter.com/dahlbyk/status/55341994817503232
$unName=Get-Command 'Update-Name' -CommandType Cmdlet;
function update-name {
& $unName
}
答案 2 :(得分:1)
您可以使用proxy function吗?