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

如何在PowerShell脚本中创建命名空间,powershell,Powershell,我想在PowerShell.ps1脚本或.psm1模块中使用我自己的自定义名称空间。这可能吗?如果是,那么语法是什么 我在这里找到了一个相关链接: 似乎我需要创建自己的自定义对象,或者可能为此使用自定义关联数组 我希望能够像这样调用我的函数: [MyCoolNamespace]::Get-CrazyYall 使用静态方法创建自定义类型: PS C:\> Add-Type @' >> using System; >> public class MyCoolNamespace { >> pu

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

我在这里找到了一个相关链接:

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

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

[MyCoolNamespace]::Get-CrazyYall

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

PS C:\> Add-Type @' >> using System; >> public class MyCoolNamespace { >> public static string Foo() { >> return "Foo"; >> } >> } >> '@ >> PS C:\> [MyCoolNamespace]::Foo() Foo PS C:\>添加类型@' >>使用制度; >>公共类名称空间{ >>公共静态字符串Foo(){ >>返回“Foo”; >> } >> } >> '@ >> PS C:\>[MyColNamespace]::Foo() 福
模块名类似于命名空间。例如:

Microsoft.PowerShell.Core\Get-Command

Get-Command

通常,在调用命令(cmdlet、函数或别名)时不使用模块限定名,但如果确实存在冲突或希望100%确定您正在调用想要调用的函数,则可以使用该名称。

您可以尝试使用PSTypeNames

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

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

$var |获得会员

谢谢!我想只有回到C#语法才有可能?我希望在PowerShell中编写函数,但将它们放在命名空间中。这可能吗?容易吗?例如,如果我已经在PowerShell中编写了函数Get Foo,该怎么办?我不知道在普通PowerShell中如何实现这一点。谢谢!我认为这实际上更符合我想做的事情。基本上,我想要一个名称空间,所以我不必写出长函数名(即伪名称空间)。我接受这个名称是因为它是“纯”PowerShell,提供了我想要的,尽管名称不同……这还远远不够完整:例如,我无法访问从模块导出的变量。函数和别名确实可见