代码之家  ›  专栏  ›  技术社区  ›  Scott Saad

我是否应该为PowerShell Cmdlet实现IPropertyCmdletProvider接口?

  •  0
  • Scott Saad  · 技术社区  · 15 年前

    我正在写一封信 NavigationCmdletProvider 对于PowerShell。通过 GetItem GetChildItems

    文件 IPropertyCmdletProvider 界面告诉我们以下内容:

    下面的接口

    • 当用户必须使用诸如Get属性和Set属性之类的cmdlet时 cmdlet。
    • ContainerCmdletProvider,或 NavigationCmdletProvider类。

    困惑:

    在我看来,没有太多有用的信息,因为用户如何知道他们 必须

    问题:

    在什么情况下应该实现IPropertyCmdletProvider接口?

    1 回复  |  直到 4 年前
        1
  •  3
  •   Keith Hill    15 年前

    哇,那些医生有点老了。没有Get/Set属性cmdlet。这必须引用Get/Set-ItemProperty cmdlet。对于RegistryProvider,这些cmdlet是必不可少的,因为它是访问注册表值的唯一方法。也就是说,Get-Item/ChildItem cmdlet只返回RegistryKey对象,从不返回注册表值对象(它们在.NET中不存在)。必须使用Get/Set ItemProperty来获取/设置regkey下的特定regvals。

    OTOH文件系统提供程序允许您直接访问容器(dir)和leaf(文件)。您可以直接获取文件的内容。但是,如果要获取文件的最后写入时间,可以使用Get-ItemProperty:

    PS> Get-ItemProperty -Path .\DotNetTypes.format.ps1xml -Name LastWriteTime
    
    
    PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Win
                    dows\System32\WindowsPowerShell\v1.0\DotNetT
                    ypes.format.ps1xml
    PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Win
                    dows\System32\WindowsPowerShell\v1.0
    PSChildName   : DotNetTypes.format.ps1xml
    PSDrive       : C
    PSProvider    : Microsoft.PowerShell.Core\FileSystem
    LastWriteTime : 4/24/2009 11:21:46 AM
    

    但是,我通常不会以这种方式访问此属性。我发现输出非常冗长。我会这样做:

    PS> (Get-Item .\DotNetTypes.format.ps1xml).LastWriteTime
    
    Friday, April 24, 2009 11:21:46 AM