2009-09-16 7 views
1

J'essaie de créer un fichier d'aide MAML externe pour un module de script. En guise de test, j'ai créé un module simple appelé "modTest" avec 2 fonctions enregistrées dans un fichier .psm1:Powershell V2 Aide MAML externe

function Test-SqlScript2 
{ 
} 
function Out-SqlScript2 
{ 
} 

J'ai sauvé le module dans mon répertoire Modules utilisateur ~ \ Documents \ Modules \ modTest Ensuite, je créé un sous-répertoire pour un fichier MAML ~ \ Documents \ Modules \ ModTest \ en-US Le fichier MAML que j'utilise pour le test est disponible here. J'ai ensuite démarré PowerShell et utilisé Import-Module pour importer le module.

Contrairement à cmdlets compilé le placement du fichier ne fonctionne pas par lui-même

Alors, à côté j'ai essayé d'ajouter le lien d'aide vers le haut du module de script, qui ne fonctionne pas non plus:

<# 
.ExternalHelp C:\Users\cmiller6\Documents\WindowsPowershell\Modules\ModTest\en-US\ModTest.help.xml 
#> 


function Test-SqlScript2 
{ 
} 
function Out-SqlScript2 
{ 

J'ai essayé d'ajouter les informations d'aide à chaque fonction, qui ne fonctionne:

function Test-SqlScript2 
{ 
<# 
.ExternalHelp C:\Users\cmiller6\Documents\WindowsPowershell\Modules\ModTest\en-US\ModTest.help.xml 
#> 
} 
function Out-SqlScript2 
{ 
<# 
.ExternalHelp C:\Users\cmiller6\Documents\WindowsPowershell\Modules\ModTest\en-US\ModTest.help.xml 
#> 

Deux questions:

  1. Est-il possible de créer un script niveau du module aide GAML externe ou avez-vous besoin de préciser le lien d'aide dans chaque fonction?
  2. Bien que les demandes de documentation et messages de blog indiquent que le dossier spécifique de langue à savoir en-US sera automatiquement recherché lorsque vous spécifiez un chemin (~/modTest \ ModTest.help.xml) Je ne pouvais pas obtenir le GAML fichier à résoudre sauf si j'ai inclus le chemin explicite (~/ModTest/fr-US/ModTest.help.xml). Est-ce un bug? Voir les liens suivants pour la documentation sur rendez-vous de l'aide et la langue spécifiques dossiers:

Writing Help for Windows PowerShell Modules PowerShell V2 External MAML Help

Répondre

4

En ce qui concerne # 1, il me semble que vous devez spécifier la balise de commentaire ExternalHelp pour chaque commande (script ou fonction). Mise à jour: L'équipe PowerShell m'a confirmé que vous deviez spécifier la balise de commentaire pour chaque commande. J'ai soumis un suggestion on MSConnect sur lequel vous pouvez voter si vous souhaitez le voir dans une future version de PowerShell. En ce qui concerne le n ° 2, cela fonctionne et à partir de mes tests, vous n'avez pas à spécifier le chemin complet (ce qui est très agréable). Voici le contenu du module dir j'ai créé pour tester ceci:

~\Documents\WindowsPowerShell\Modules\ModTest\ModTest.psm1 
~\Documents\WindowsPowerShell\Modules\ModTest\en-US\ModTest.psm1-Help.xml 
~\Documents\WindowsPowerShell\Modules\ModTest\fr-FR\ModTest.psm1-Help.xml 

Le contenu de mon fichier est ModTest.psm1:

# .ExternalHelp ModTest.psm1-Help.xml 
function Add-BitsFile([object[]]$BitsJob, [string[]]$Destination, 
         [string[]]$Source) 
{ 
    Write-Host "Add-BitsFile" 
} 

# .ExternalHelp ModTest.psm1-Help.xml 
function Complete-BitsTransfer([object[]]$BitsJob) 
{ 
    Write-Host "Complete-BitsTransfer" 
} 

Les deux fichiers ModTest.psm1-Help.xml sont juste une copie de:

"$ pshome \ Modules \ BitsTransfer \ en-US \ Microsoft.BackgroundIntelligentTransfer.Management.dll-Aide.xml "

Le plus gros PITA en testant ceci était d'obtenir un fichier MAML valide donc je viens de copier un fichier de travail connu :-) BTW pour la version française Je viens de préfixer le synopsis avec" Parlez vous "afin que je puisse ... test, il a travaillé

Ensuite, vous avez besoin d'un moyen rapide de changer le fil CurrentUICulture pour tester les différents fichiers d'aide localisés Cette fonction est Jeffrey Snover wrote some time ago je mis à jour pour changer aussi le CurrentUICulture:

function Using-Culture (
[System.Globalization.CultureInfo]$culture = ` 
    (throw "USAGE: Using-Culture -Culture culture -Script {scriptblock}"), 
[ScriptBlock]$script= ` 
    (throw "USAGE: Using-Culture -Culture culture -Script {scriptblock}")) 
{ 
    $OldCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture 
    $OldUICulture = [System.Threading.Thread]::CurrentThread.CurrentUICulture 
    try { 
     [System.Threading.Thread]::CurrentThread.CurrentCulture = $culture 
     [System.Threading.Thread]::CurrentThread.CurrentUICulture = $culture 
     Invoke-Command $script 
    } 
    finally { 
     [System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture 
     [System.Threading.Thread]::CurrentThread.CurrentUICulture = $OldUICulture 
    }  
} 

Maintenant, nous allons le tester:

PS> gmo|rmo 
PS> ipmo ModTest 
PS> Add-BitsFile -? 

NAME 
    Add-BitsFile 

SYNOPSIS 
    Adds one or more files to an existing Background Intelligent Transfer 
    Service (BITS) transfer job. 

<snip> 

PS> using-culture fr-FR {gmo|rmo; ipmo ModTest; Add-BitsFile -?} 

NAME 
    Add-BitsFile 

SYNOPSIS 
    Parlez vous adds one or more files to an existing Background 
    Intelligent Transfer Service (BITS) transfer job. 
+0

Merci. Je vais tester les dossiers spécifiques à la langue plus loin. J'ai environ 100 fonctions pour créer de l'aide pour. J'espérais pouvoir simplement référencer le fichier d'aide externe une fois (aide au niveau du module). Au moins, je peux pointer vers un seul fichier MAML avec. Il pourrait être intéressant de créer un script pour générer le MAML avec les stubs pour les zones à remplir. J'ai également saisi un MAML de travail à partir de quelques applets de commande que j'avais écrites. –

+0

Comme un commentaire, il semble que PSv5 peut utiliser l'aide MAML tant qu'il se trouve dans le même dossier racine que le fichier '.psm1' sans travail supplémentaire tant qu'il est' -help.xml'. Testé en important le module sans le fichier en place, en appelant get-help et en obtenant le générique, en collant le fichier et en le répétant, le MAML s'est attiré automatiquement (et reste tant que le module est chargé). –

Questions connexes