是否可以为.Net类创建别名?

时间:2016-02-02 09:11:36

标签: powershell alias powershell-v4.0

PowerShell 4.0

是否可以为.Net类创建PowerShell别名?它对我不起作用:

New-Alias -Force -Name someClass -Value [CompanyName.AppName.SomeNamespace.ClassName]

3 个答案:

答案 0 :(得分:2)

总是有 using 语句:

using assembly System.Windows.Forms
using namespace System.Windows.Forms
[MessageBox]::Show('Hello')

答案 1 :(得分:1)

如有疑问,请阅读documentation

  

别名是cmdlet或命令元素的备用名称或昵称,例如函数,脚本,文件或可执行文件。您可以在任何Windows PowerShell命令中使用别名而不是命令名。

类既不是cmdlet,也不是函数/脚本/可执行文件,因此它们不能别名。

您可以做的是定义custom type accelerators,但是:

[PSObject].Assembly.GetType('System.Management.Automation.TypeAccelerators')::Add('mydate', 'System.DateTime')

[accelerators]::Add()在我测试时对我不起作用)

答案 2 :(得分:0)

试试这个: (确保首先加载 System.Windows.Forms)

$Accelerators=[PowerShell].Assembly.GetType("System.Management.Automation.TypeAccelerators")
$Accelerators::add("myKey","System.Windows.Forms.SendKeys")
$Accelerators::add("myTB","System.Windows.Forms.TextBox")

在 PowerShell 3.0 Win7(x64) 和 5.0 (Win10,x64) 上测试过,你可以试试 4.0.