如何将变量从一个PowerShell脚本加载到另一个?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将变量从一个PowerShell脚本加载到另一个?相关的知识,希望对你有一定的参考价值。

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

脚本的示例部分:

.\get-cluster.ps1

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

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

答案

除非您的get-cluster.ps1文件位于您的根目录中,否则点源看起来更像这样:

. .\Get-Cluster.ps1

这将在与调用者相同的范围内执行Get-Cluster.ps1脚本,从而使它的脚本级别变量在调用者中可用。

另一答案

点采购将实现您的目标。但是,这是一个模棱两可的设计,并且与PowerShell CmdLet开发指南冲突。授予您正在编写脚本而不是Cmdlet的权限,但是给定所选的脚本文件名,您似乎正在尝试遵循PowerShell约定。

使用动词Get表示您正在检索资源。因此,如果您有一个名为Get-Cluster.ps1的脚本,则它应该检索一个或多个Cluster实例。请考虑以下内容:

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

这仍然使您能够在当前范围内设置变量,而无需使用点源的所有魔力和歧义。我并不是想鼓吹,但是PowerShell团队在创建一致性方面做得很好,我认为当我们使用自己的脚本/模块/ cmdlet扩展PowerShell时,使它永久存在有很多价值。如果您不愿意使用点源在当前范围内设置新的或现有的变量,那么我建议您找到一个新的动词。

请参阅Approved Cmdlet Verbs on Microsoft Docs了解更多信息。

以上是关于如何将变量从一个PowerShell脚本加载到另一个?的主要内容,如果未能解决你的问题,请参考以下文章

Powershell将文件从环境变量复制到另一个环境变量的zip文件夹

从一页导航到另一页后脚本未加载

Oracle PL/SQL 和 Shell 脚本:从一种模式到另一种模式

如何将 .bat 文件中的变量导入 PowerShell 脚本?

如何从 Powershell/其他脚本设置 Bamboo 变量?

使用 Powershell 将 MSMQ 消息从一个队列移动到另一个队列