有没有一种在Powershell中创建自定义类型的简单方法?

时间:2017-01-24 20:14:55

标签: powershell

只想创建一个简单的自定义类型,从[System.Collections.ArrayList]到更短的[arrayList]或类似的东西,并将其放入模块中以方便使用。看着Add-Type,但无法弄清楚它是否适合以及如何完全正确。我想得到的是:

[ArrayList]<-[System.Collections.ArrayList] #Something like that
$myArList=New-Object ArrayList
$myArList.Add(1,2,3)

2 个答案:

答案 0 :(得分:9)

您正在寻找type accelerator

[accelerators]::add('arrayList','System.Collections.ArrayList')

我会避免使用非标准加速器。自从至少v3以来,PowerShell对类具有良好的制表符完成支持。

因此,如果您输入[arrayl TAB ,那么它将为您填写全名。

Ryan Bemrose提出了一个很好的观点;默认情况下[accelerators]类型加速器不可用,但您可以像这样创建它:

$acc = [psobject].assembly.gettype("System.Management.Automation.TypeAccelerators")
$acc::Add('accelerators', $acc)

答案 1 :(得分:8)

如果您只是想避免一直重新输入System.Collections.ArrayList,您可以简单地为变量指定一个类型文字并使用它:

$ListType = [System.Collections.ArrayList]
$MyArrayList = New-Object $ListType
# more code
$AnotherArrayList = New-Object $ListType

或使用v5.0 new()构造函数:

$MyArrayList = $ListType::new()