代码之家  ›  专栏  ›  技术社区  ›  Adam Driscoll

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

  •  6
  • Adam Driscoll  · 技术社区  · 14 年前

    打字 [RootNameSpace1.NameSpace2.Namepsace3+SomeEnum]::SomeValue 是一种负担,不是一个很好的用户体验。我知道你可以参考 System 没有命名空间的级别对象,以便 [Type]::GetType(... 会有用的。是否有一些清单可以创建或命令可以用来缩短冗长的名称空间?

    2 回复  |  直到 14 年前
        1
  •  6
  •   x0n    4 年前

    任何接受enum的方法都将接受字符串,但这仅适用于enum,并且不存在歧义(这意味着没有其他重载以这种方式使用与字符串匹配的签名)

    如果您使用的是powershell v2.0,则可以(ab)使用类型加速器。我以前在博客上写过这个,乔尔·贝内特用一个简单的脚本总结了我的技巧:

    http://poshcode.org/1869

    更新(2020):此链接已断开,但对于当前版本的powershell,有一种更简单的方法。

    using namespace System.Collections.Generic;
    $list = new-object List # also: $list = [list]::new()
    

    -奥辛

        2
  •  5
  •   Roman Kuzmin    14 年前

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

    # 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() }