如何在PowerShell脚本中创建命名空间

时间:2014-11-12 17:38:27

标签: powershell

我想在PowerShell .ps1脚本或.psm1模块中使用我自己的自定义命名空间。这可能吗?如果是这样,这样做的语法是什么?

我在这里找到了相关链接: Breaking the Powershell namespace limit of global,script

似乎我需要创建自己的自定义对象,或者可能为此使用自定义关联数组?

我希望能够像这样调用我的函数:

[MyCoolNamespace]::Get-CrazyYall

3 个答案:

答案 0 :(得分:13)

模块名称类似于命名空间。例如:

Microsoft.PowerShell.Core\Get-Command

相同
Get-Command

通常,在调用命令(cmdlet,函数或别名)时不使用模块限定名称,但如果确实存在冲突或想要100%确定要调用您想要的函数,它会派上用场

答案 1 :(得分:9)

使用静态方法创建自定义类型:

PS C:\> Add-Type @'
>> using System;
>> public class MyCoolNamespace {
>>   public static string Foo() {
>>     return "Foo";
>>   }
>> }
>> '@
>>
PS C:\> [MyCoolNamespace]::Foo()
Foo

答案 2 :(得分:0)

您可以尝试使用PSTypeNames。

$Var = [PSCustomObject]@{
    foo = [string]::Empty
    bar = $false
}

$Var.PSTypeNames.Insert(0, 'My.Namespace')

$ var |得到构件