2010-06-28 120 views
1

我有一个主脚本正在调用其他几个脚本,我需要将其他脚本的变量加载到主脚本中,以便将它们转储到html文件中。我尝试点播我正在调用的脚本,但没有奏效,或者我做错了什么。任何帮助,将不胜感激。脚本的如何将变量从一个PowerShell脚本加载到另一个脚本?

示例部分:

.\get-cluster.ps1 

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

变量$capacityinfo存在于get-cluster.ps1脚本

回答

4

除非你的GET-cluster.ps1文件在你的根目录,点源看起来会是这样的:

. .\Get-Cluster.ps1 

这将执行Get-Cluster.ps1脚本与调用者使其脚本级别变量可用在来电者。

+0

感谢您的回复。我的脚本不在根目录中,所以我可能不会调用它。谢谢您的帮助。 – jrob24 2010-06-28 22:53:33

3

点采购将实现您的目标。但是,这是一个模糊的设计,与PowerShell CmdLet开发指南相冲突。当然,你正在编写一个脚本,而不是一个Cmdlet,但看起来你正在尝试遵循给定你选择的脚本文件名的PowerShell约定。

使用动词Get意味着您正在检索资源。因此,如果您有一个名为Get-Cluster.ps1的脚本,那么它应该检索一个或多个Cluster实例。而不是考虑以下几点:

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

这仍然将让您在设定的当前范围变量没有所有的魔法和点采购的不确定性。我并不想说服自己,但PowerShell团队在创建一致性方面做得很好,我认为当我们用自己的脚本/模块/ cmdlets扩展PowerShell时,试图延续这一点是非常有价值的。如果您在使用点源代码在当前范围内设置新变量或现有变量时遇到困难,那么我鼓励您找到一个新动词。

有关更多信息,请参阅Cmdlet Verbs on MSDN

+0

好点,欢呼! – 2010-06-29 14:15:17

相关问题