支持自定义PowerShell cmdlet的Get-Help

时间:2010-02-19 15:11:01

标签: c# .net powershell

我在C#中创建了一些自定义PowerShell Cmdlet,并希望提供一些使用get-help cmdlet显示的信息。例如“get-help my-cmdlet”。

我创建了一个从PSSnapIn派生的基本管理单元,并覆盖了描述,名称和供应商属性。我还创建了我的帮助文件“Cmdlets.dll-Help.xml”。根据指示here,Cmdlets.dll是程序集的正确名称。

我创建了以下脚本来快速测试这个帮助:

$ErrorActionPreference = "Stop"
$scriptFolder = Split-Path $script:MyInvocation.MyCommand.Path

$dll = ($scriptFolder + "\Release\x64\Cmdlets.dll")
Write-Host "Testing Cmdlets in $dll" -fore Green

[System.Reflection.Assembly] $assembly = [System.Reflection.Assembly]::LoadFrom($dll)
Import-Module -assembly $assembly

get-help get-latestfiles

这似乎只是提供了一些关于cmdlet参数的默认帮助,但未能获得我在XML文件中编写的任何示例。有没有人对这是为什么有任何想法?

2 个答案:

答案 0 :(得分:2)

似乎有两个问题让我的帮助不起作用。首先是需要将XML复制到Cmdlet DLL的输出目录中,以便拾取Powershell。

第二个原因似乎是我的帮助文件中的错误。我不确定这是什么,但是即使错误操作首选项被设置为停止,Powershell似乎也会默默地失败。我最终直接从C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ en-US \ Microsoft.PowerShell.Commands.Management.dll-Help.xml中提取XML并修改它以满足我的需要。

答案 1 :(得分:1)

Get-Help默认情况下仅显示cmdlet的帮助子集。指定-Full以查看参数帮助和示例:

Get-Help Get-LatestFiles -Full

如果这不是问题(听起来不是),那么看看这个PowerShell script that generates skeleton MAML files。运行它并使用其输出来查看是否显示了正确的帮助。