You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell脚本间共享变量?解决动态加载时变量失效问题

问题描述

我有两个PowerShell脚本main.ps1和data.ps1,它们共享全局变量$Global:SharedValues——该变量在data.ps1中初始化,随后在main.ps1中使用,这套方案原本运行完全正常。

但随着data.ps1的规模不断扩大,维护变得愈发不便,因此我希望将其拆分为多个文件,同时实现动态引入这些脚本,无需每次新增数据脚本时都手动在main.ps1中添加.引入语句。

我尝试过两种动态引入方式:Invoke-Expression $data和powershell.exe $data。这两种方式都能正常运行数据脚本,但对全局变量的修改却不生效——推测这些脚本是在独立的内存实例中运行的。

请问是否可以让所有脚本共享该全局变量?能否通过管道或其他方式将变量传递给动态引入的脚本?

解决方案

此前我采纳过一个现已被移除的答案,其实解决方法非常简单:.点源命令可以通过变量接收文件名(这一点我之前并不知晓)。具体方案是使用Get-ChildItem获取所有需要引入的脚本列表,然后对它们逐个执行点源操作:

$Global:SharedValues = @{}
$dataScriptFiles = Get-ChildItem -Path $PSScriptRoot -Filter "data-*"
foreach ( $file in $dataScriptFiles )
{
. $file.FullName # Dot-Source
}

内容的提问来源于stack exchange,提问作者Eric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 03:28:14