在Powershell中将`import <module>等模块导入为<alias>`

时间:2018-06-18 12:31:39

标签: powershell

所以这就是我尝试做的事情 - 例如,如果我想在我的程序中使用ArrayList<>我只是写

...
import java.util.ArrayList
...

然后从那里我可以写ArrayList<String> arr = new ArrayList<String>...等。

另外,在Python中,我可以编写类似

的内容
from numpy.random import randint

再次,在我的程序中,我可以写randint(something)

在PowerShell中有相同的方法吗?我想使用System.Collections.ArrayList,但我无法在线查找任何语法。

4 个答案:

答案 0 :(得分:3)

使用using namespace statement引用名称空间:

using namespace System.Collections

然后,您可以在创建新对象时省略命名空间

$arr = New-Object ArrayList

答案 1 :(得分:1)

您必须为New-Object创建System.Collections.ArrayList

$arr= New-Object System.Collections.ArrayList
  

New-Object cmdlet创建.NET Framework或COM的实例   对象

之后,您可以使用ArrayList方法:

$arr.Add('test')

答案 2 :(得分:1)

我会把它扔进去只是为了好玩。首先,创建一个函数:

function New-ArrayList{
    New-Object System.Collections.ArrayList
}

接下来创建一个别名:

New-Alias -Name al -Value New-ArrayList

然后使用它:

$myArrayList = al

答案 3 :(得分:1)

最佳选择可能是@laika给出的选项,但您也可以使用Type Accelerators。这些过去很容易使用,但是从PSv3开始,事情变得更加困难(可能会迫使你使用更好的技术)。内置加速器包括标准.NET类型,例如intstringDateTime等,以及更加模糊的内容,例如System.Management.ManagementObject。您可以获得这样的完整列表:

[PsObject].Assembly.GetType("System.Management.Automation.TypeAccelerators")::Get

要创建自己的,请执行以下操作:

[PsObject].Assembly.GetType("System.Management.Automation.TypeAccelerators")::Add('ArrayList',"System.Collections.ArrayList")

然后您可以像这样使用新的加速器:

$arrayList = New-Object ArrayList

$arrayList.Add(1)
$arrayList.Add(2)
$arrayList.Add(3)

$arrayList
1
2
3

请注意,这些仅适用于当前会话,因此每次您想要使用它们时都需要重新创建。