如何为自定义PowerShell提供程序注册帮助?

时间:2013-06-23 10:07:31

标签: .net c#-4.0 powershell

我正在实现自定义PowerShell提供程序,我想为提供程序添加一个MAML帮助文件,可以使用Get-Help MyProvider访问该文件。

我在PS SnapIn中注册提供程序时尝试将MAML XML文件添加到ProviderConfigurationEntry。从MSDN文档中,它似乎是正确的方法(http://msdn.microsoft.com/en-us/library/system.management.automation.runspaces.providerconfigurationentry_members%28v=vs.85%29.aspx)。我试图指定XML文件的完整路径,也只指定文件名。

public override Collection<ProviderConfigurationEntry> Providers 
{
    get 
    {
        if (this.providers == null)
        {
            if (this.helpFiles == null)
            {
                this.LoadHelpFiles();
            }

            this.providers = new Collection<ProviderConfigurationEntry> 
            {
                new ProviderConfigurationEntry(
                    "MyProvider",
                    typeof(MyProvider),
                    "MyApplication.PsProvider.dll-Help.xml")
            };
        }

        return this.providers;
    }
}

然而,这不起作用。 Get-Help MyProvider会搜索所有帮助主题,而不是显示提供程序帮助文件,并且Get-Help -Category provider中未列出帮助文件。

如何将MAML文件注册为提供者的帮助?

1 个答案:

答案 0 :(得分:1)

我明白了。事实证明,提供程序的名称在MAML文件中拼写错误。

/helpItems/providerHelp/Name中的名称必须与ProviderConfigurationEntry对象中指定的提供程序名称匹配。另外,我指定MAML文件的完整路径作为ProviderConfigurationEntry构造函数的第三个参数,它可以工作!