设置Powershell Provider

时间:2016-05-29 16:03:36

标签: c# powershell properties

我正在用C#构建一个Powershell提供程序。它为其子树中的项返回普通的C#对象。

默认情况下,所有属性都会显示在每个项目的垂直列表中,这很难看。因此,我需要指定显示属性,以允许对象正确地格式化。

根据this文章和this文章,为了在执行"dir"时获取要显示的属性子集,需要创建“.format.ps1xml”文件在$pshome目录中。我试图完全按照建议这样做,条目如下:

<Types>
  <Type>
    <Name>My.Namespace.Provider.Account</Name>
    <Members>
      <MemberSet>
        <Name>PSStandardMembers</Name>
        <Members>
          <PropertySet>
            <Name>DefaultDisplayPropertySet</Name>
            <ReferencedProperties>
              <Name>Name</Name>
            </ReferencedProperties>
          </PropertySet>
        </Members>
      </MemberSet>
    </Members>
  </Type>
...

然而,这对输出没有任何影响。这可能是一个配置错误,因此以下是我想到的所有问题:

  1. 文件是否必须位于$pshome目录(我的计算机上为C:\Windows\System32\WindowsPowerShell\v1.0)?该文件可以在别处生活吗?当我的.dll可以放在任何地方时,必须在WindowsPowerShell目录中安装它似乎是错误的。

  2. 该文件到底应该命名的是什么?我的c#提供程序的命名空间,c#类型,然后是[CmdletProvider]属性中指定的提供程序名称。我已经尝试使用提供商名称,后跟.format.ps1xml,但如上所述,它不起作用。

  3. 上面xml的Type部分中提到的类型是我的提供程序返回的名称空间限定类型。这是对的吗?

0 个答案:

没有答案