2010-06-28 12 views
1

J'ai un script principal qui appelle plusieurs autres scripts et j'ai besoin de charger les variables des autres scripts dans le script principal pour que je puisse les sauvegarder dans un fichier html. J'ai essayé d'obtenir les scripts que j'appelle mais cela n'a pas fonctionné ou j'ai fait quelque chose de mal. Toute aide serait appréciée.Comment charger une variable d'un script PowerShell à un autre?

Exemple section du script:

.\get-cluster.ps1 

$MyReport += Get-CustomHeader "Clusters not in compliance : $($CapacityInfo.count) ($MyReport += Get-HTMLTable $capacityinfo 
$MyReport += Get-CustomHeaderClose 

La $capacityinfo variable existe dans le script get-cluster.ps1

Répondre

4

À moins que votre fichier get-cluster.ps1 est dans votre répertoire racine, la source point ressemblerait plus à ceci: Ceci exécutera le script Get-Cluster.ps1 dans la même portée que l'appelant rendant ses variables de niveau de script disponibles. dans l'appelant.

+0

Merci pour la réponse. Mon script n'était pas dans le répertoire racine, donc je ne l'appelais probablement pas. Merci pour l'aide. – jrob24

3

L'approvisionnement par points atteindra votre objectif. Cependant, il s'agit d'une conception ambiguë et elle est en conflit avec les consignes de développement PowerShell CmdLet. Accordé que vous créez un script et pas une applet de commande, mais il semble que vous essayez de suivre les conventions PowerShell compte tenu du nom de fichier de script que vous avez choisi. L'utilisation du verbe Get implique que vous récupérez une ressource. Ainsi, si vous avez un script appelé Get-Cluster.ps1, il doit récupérer une ou plusieurs instances Cluster. Considérez ce qui suit à la place:

$clusters = .\Get-Cluster.ps1 -NonCompliantOnly 

Cela vous permettra encore de définir une variable dans votre portée actuelle sans toute la magie et l'ambiguïté du point d'approvisionnement. Je n'essaie pas de prêcher, mais l'équipe PowerShell a fait du bon travail en créant de la cohérence et je pense qu'il y a beaucoup de valeur à essayer de perpétuer cela lorsque nous étendons PowerShell avec nos propres scripts/modules/cmdlets. Si vous êtes décidé à définir une nouvelle variable ou une variable existante dans la portée actuelle en utilisant l'approvisionnement par points, je vous encourage à trouver un nouveau verbe.

Voir Cmdlet Verbs on MSDN pour plus d'informations.

+0

Bons points, bravo! –

Questions connexes