我想在PowerShell .ps1脚本或.psm1模块中使用我自己的自定义命名空间。这可能吗?如果是这样,这样做的语法是什么?
我在这里找到了相关链接: Breaking the Powershell namespace limit of global,script
似乎我需要创建自己的自定义对象,或者可能为此使用自定义关联数组?
我希望能够像这样调用我的函数:
[MyCoolNamespace]::Get-CrazyYall
答案 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 |得到构件