【发布时间】:2017-10-03 10:51:17
【问题描述】:
我有两个不同的 PowerShell 脚本。这两个脚本都将使用不同的会话顺序执行。第一个 PowerShell 脚本应该创建一个全局变量并保存一些值。第二个脚本应该读取那个全局变量。
如何在第一个脚本中创建这样的全局变量?
【问题讨论】:
-
您的流程不能重构为只让第一个脚本调用第二个脚本吗?然后它可以传入任何它想要的东西。
标签: powershell
我有两个不同的 PowerShell 脚本。这两个脚本都将使用不同的会话顺序执行。第一个 PowerShell 脚本应该创建一个全局变量并保存一些值。第二个脚本应该读取那个全局变量。
如何在第一个脚本中创建这样的全局变量?
【问题讨论】:
标签: powershell
创建一个全局变量很容易。做就是了
$Global:yourvariable 第一次声明时。之后,您可以在任何地方使用$yourvariable 调用该变量。
但恐怕这不会解决您的问题,因为您试图在两个不同的会话上分别运行两个脚本。你怎么能确定第一个脚本会在第二个脚本请求之前生成“全局变量”?
如果您热衷于并行运行它们,请查看 Start-Job cmdlet 或 PowerShell 运行空间。
您可以尝试的另一件事是将全局变量写入两个脚本均可访问的数据库或文件。使用文件可能会导致所有权死锁或“文件正在被另一个进程使用”或其他 I/O 错误。
你想要做的事情,根本无法用全局变量来完成。这就是为什么它们被称为会话。一个独立于另一个。但我敢肯定,无论你想做什么,都可以通过更简单的方式实现。
【讨论】:
它们是否同时运行?
如果没有,您最好使用Export-Clixml 从一个脚本导出变量/对象,然后使用Import-Clixml 将其导入另一个脚本。
在第一个脚本中:
$someVar | Export-Clixml C:\temp\someVar.xml
在第二个脚本中:
$someVar = Import-Clixml C:\temp\someVar.xml
【讨论】: