PowerShell - 缩短命名空间名称,以便更容易访问类型

时间:2010-05-26 16:45:36

标签: powershell namespaces

是否有缩短PowerShell命名空间引用的方法?

键入[RootNameSpace1.NameSpace2.Namepsace3+SomeEnum]::SomeValue很费力,而不是一个非常好的用户expierence。我意识到你可以在没有命名空间的情况下引用System级别对象,这样[Type]::GetType(...就可以工作。是否有一些我可以创建的清单或命令我可以用来缩短冗长的命名空间?

2 个答案:

答案 0 :(得分:6)

任何接受Enums的方法都会接受字符串,但这仅适用于Enums且不存在歧义(意味着没有其他重载符号以这种方式匹配字符串。)

如果您使用的是powershell v2.0,则可以(ab)使用类型加速器。我之前在博客上写过这篇文章,Joel Bennett用一个方便的脚本包装了我的技术:

http://poshcode.org/1869

-Oisin

答案 1 :(得分:5)

可以将冗长的类型分配给变量,然后通过这些变量使用:

# enum values
$rvk = [Microsoft.Win32.RegistryValueKind]
$rvk::Binary
$rvk::DWord

# static members
$con = [System.Console]
$con::CursorLeft
$con::WriteLine('Hello there')

# just to be sure, look at types
.{
    $rvk::Binary
    $con::WriteLine
    $con::CursorLeft
} |
% { $_.GetType() }