有没有一种方法可以在不继承PowerShell中的环境变量的情况下调用外部脚本?

有没有一种方法可以在不继承PowerShell中的环境变量的情况下调用外部脚本?,powershell,Powershell,我有一个脚本,它定义了一些环境变量。我想调用外部脚本,但它与我定义的环境变量冲突。正如官方文档中提到的:环境变量及其值由子会话继承。所以我的问题是:有没有一种方法可以在不继承我定义的环境变量的情况下调用外部脚本 我这样调用外部脚本: &{cmd/c”\MySuperScript.cmd}*>&1 |写日志 你说你读了关于环境变量的文档。你读过我的文件了吗? 这会给你带来你想要的洞察力,当您将外壳输出到另一个程序时,该exe/shell将处于控制状态,并且它将使用它所知道的内容 如果您正在创建系统

我有一个脚本,它定义了一些环境变量。我想调用外部脚本,但它与我定义的环境变量冲突。正如官方文档中提到的:环境变量及其值由子会话继承。所以我的问题是:有没有一种方法可以在不继承我定义的环境变量的情况下调用外部脚本

我这样调用外部脚本:

&{cmd/c”\MySuperScript.cmd}*>&1 |写日志

你说你读了关于环境变量的文档。你读过我的文件了吗? 这会给你带来你想要的洞察力,当您将外壳输出到另一个程序时,该exe/shell将处于控制状态,并且它将使用它所知道的内容

如果您正在创建系统环境变量,那么这些变量可供系统使用,而不仅仅是脚本。没有解决办法

一种现成的方法是利用用户或流程环境变量,我没有对此进行过测试(因为我从未在需要它的用例中进行过测试)

$CurrentDate = Get-Date -format yyyyMMdd
[Environment]::SetEnvironmentVariable("CYCLEDATEB", $CurrentDate, "User")

$CurrentDate = Get-Date -format yyyyMMdd
[Environment]::SetEnvironmentVariable("CYCLEDATEB", $CurrentDate, "Process")

当然,它们只对该用户可用。当然,任何不同用户的子进程都看不到它们,但您的逻辑和代码路径需要重新调整以处理这一问题

你说你读了关于环境变量的文档。你读过我的文件了吗? 这会给你带来你想要的洞察力,当您将外壳输出到另一个程序时,该exe/shell将处于控制状态,并且它将使用它所知道的内容

如果您正在创建系统环境变量,那么这些变量可供系统使用,而不仅仅是脚本。没有解决办法

一种现成的方法是利用用户或流程环境变量,我没有对此进行过测试(因为我从未在需要它的用例中进行过测试)

$CurrentDate = Get-Date -format yyyyMMdd
[Environment]::SetEnvironmentVariable("CYCLEDATEB", $CurrentDate, "User")

$CurrentDate = Get-Date -format yyyyMMdd
[Environment]::SetEnvironmentVariable("CYCLEDATEB", $CurrentDate, "Process")
当然,它们只对该用户可用。当然,任何不同用户的子进程都看不到它们,但您的逻辑和代码路径需要重新调整以处理这一问题