如何将变量从一个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 脚本?