PowerShell—缩短名称空间名称,使其';它更容易访问类型
是否有缩短PowerShell命名空间引用的方法PowerShell—缩短名称空间名称,使其';它更容易访问类型,powershell,namespaces,Powershell,Namespaces,是否有缩短PowerShell命名空间引用的方法 键入[RootNameSpace1.NameSpace2.Namepsace3+SomeEnum]::SomeValue很费劲,不是一个很好的用户体验。我意识到您可以引用没有名称空间的系统级别对象,这样[Type]::GetType(…可以工作。是否可以创建一些清单或使用一些命令来缩短冗长的名称空间?冗长的类型可以分配给变量,然后通过这些变量使用: # enum values $rvk = [Microsoft.Win32.RegistryVal
键入
[RootNameSpace1.NameSpace2.Namepsace3+SomeEnum]::SomeValue
很费劲,不是一个很好的用户体验。我意识到您可以引用没有名称空间的系统
级别对象,这样[Type]::GetType(…
可以工作。是否可以创建一些清单或使用一些命令来缩短冗长的名称空间?冗长的类型可以分配给变量,然后通过这些变量使用:
# 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() }
任何接受枚举的方法都将接受字符串,但这仅适用于枚举,并且不存在歧义(这意味着没有其他重载以这种方式使用与字符串匹配的签名) 如果您使用的是powershell v2.0,您可以(ab)使用类型加速器。我之前在博客上写过这方面的内容,Joel Bennett将我的技术总结在一个方便的脚本中: 更新(2020):此链接已断开,但对于当前版本的powershell,有一种更简单的方法
使用名称空间System.Collections.Generic;
$list=新对象列表#另外:$list=[list]::new()
-Oisin这是一个简单的解决方案。我希望有一种方法可以实现它,而无需我们的最终用户创建这些变量,也无需在内部创建变量,然后公开某种文档。谢谢!这正是我想要的。谢谢您提供的链接(不再)可访问。您能否将答案的相关部分添加到答案中,这样就可以在没有外部依赖的情况下获得答案?如果有人想查看原始答案,请访问archive.org-