根据我的研究,如果有的话,我不相信以下内容很容易实现。然而,作为最后的手段,我想我会在这里查看。
在Powershell 2.0中,我想要一种方法来将(恼人的)长参数名称减少到各种cmdlet。我想绝对控制速记版本的样子。 (而不是PS使用的任何参数缩写方案的奴隶。)
因此,举例来说,我希望能够做到这样的事情:
# Command goes on this first line to alias "-ForegroundColor" to "-fg"
# Command goes on this second line to alias "-BackgroundColor" to "-bg"
Wr-te-Host -fg yellow -bg black "Parameter aliases now work just like I want."
我最接近这个功能的是什么,以及如何?我无法使用'get-help about_parameters'找到有关参数缩写的任何内容。
谢谢!
答案 0 :(得分:11)
检查此脚本:Get-Parameter.ps1
点源并执行以下命令,它提供了大量有关命令参数的信息。看一下别名列,它将显示所有内置参数别名,并计算可用于参数的最短名称:
PS > Get-Parameter Write-Host
Command: Microsoft.PowerShell.Utility/Write-Host
Set: Default
Name Aliases Position Mandatory Pipeline ByName Provider Type
---- ------- -------- --------- -------- ------ -------- ----
BackgroundColor {b} Named False False False All ConsoleColor
ForegroundColor {f} Named False False False All ConsoleColor
NoNewline {n} Named False False False All SwitchParameter
Object {obj} 0 False True False All Object
Separator {s} Named False False False All Object
答案 1 :(得分:9)
您可以为自己的函数创建参数别名,如下所示:
function ParamAlias {
param(
[Alias('fg','fColor')]
$ForegroundColor
)
Write-Host "$ForegroundColor" -ForegroundColor $ForegroundColor
}
ParamAlias -fg Green
ParamAlias -fColor Green
然后,您可以将此技术与Proxy CmdLets一起使用,将您自己的别名添加到现有的CmdLets中。但是,我发现在控制台中使用现有的参数别名/缩短的参数名称就足够了,你不应该在脚本中使用别名,所以我不确定这是否值得付出努力。我会选择@ Shay的回答
答案 2 :(得分:2)
给定cmdlet的参数只需要具有足够的cmdlet以使其在该cmdlet中不同。类似于Get-Member -m Property(-m代表MemberType,这是此cmdlet的唯一“M”参数)。
如果我输入快速单行,我倾向于只使用参数的前3个字符。这在大多数情况下都可以工作,如果你曾经使用它,它与思科的CLI类似。我不时会在调试时将参数标记出来,以确保我引用正确的参数。
IMO,我尽量不要在脚本中做太多。我尝试使我的脚本尽可能可读,以供其他可能不知道每个cmdlet的别名的人使用。它有助于将脚本传递给其他人。如果您阅读Don Jones博客/文章,他也会谈到这一点。但是,如果脚本仅适合我,我会尽可能简短快捷。
答案 3 :(得分:1)
这样的内容将为您提供cmdlet参数的现有别名:
Get-Command write-host |
ForEach-Object {$_.parameters |
ForEach-Object { $_.Values |
Where-Object {
$_.Aliases.Count -gt 0 } |
Select-Object Name, Aliases
}
}
我并没有真正看到“控制”别名的方法。