如何从 powershell 命令设置环境变量?

如何从 powershell 命令设置环境变量?

我想要一个包含 cmd.exe 中的星期几的环境变量。

当我运行此命令时,我得到了我想要的结果。

C:\Users\tisc>powershell (get-date).dayofweek
Friday

这里我尝试将结果存储在环境变量中。

C:\Users\tisc>set dow = powershell (get-date).dayofweek

但是当我尝试获取它时我并没有得到我想要的字符串。

C:\Users\tisc>set dow
DoW=0
dow = powershell (get-date).dayofweek

我的目标是在某些备份脚本的批处理文件中使用该变量。

答案1

若要在没有临时文件的情况下执行此操作,您可以执行以下操作:

@ECHO off
FOR /F %%i in ('powershell.exe -noprofile "(get-date).DayOfWeek"') DO SET dow=%%i
ECHO Day of week %dow%
PAUSE

从命令提示符中删除双重 %%:

FOR /F %i in ('powershell.exe -noprofile "(get-date).DayOfWeek"') DO SET dow=%i

-noprofile如果您为 PowerShell 设置了配置文件,使用将使其运行得更快。

答案2

powershell -noprofile -command {[environment]::SetEnvironmentVariable("dow", (get-date).DayofWeek, "User")}

显然您需要打开其他 cmd 才能看到更改。

答案3

我不相信你不能直接做到这一点,但你可以使用临时文件来保存结果,然后将其导入回变量:

@echo off
powershell (get-date).dayofweek > myTmpFile
set /p dow= < myTmpFile
del /q myTmpFile
echo %dow%

相关内容