只想创建一个简单的自定义类型,从[System.Collections.ArrayList]
到更短的[arrayList]
或类似的东西,并将其放入模块中以方便使用。看着Add-Type
,但无法弄清楚它是否适合以及如何完全正确。我想得到的是:
[ArrayList]<-[System.Collections.ArrayList] #Something like that
$myArList=New-Object ArrayList
$myArList.Add(1,2,3)
答案 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()