[Environment]::SetEnvironmentVariable
Dan이 제안한대로 PowerShell 내에서 환경 변수를 설정하는 것은 의미가 없다고 생각합니다. 임시 "프로세스"컨텍스트를 선택한 경우 PowerShell이 종료되면 변수의 내용이 손실되거나 배치 파일 환경에 아직 포함 되어 있지 않기 때문입니다 . 영구 "machine"또는 "user"컨텍스트를 선택한 경우, 즉 전체 스크립트가 PowerShell로 작성되지 않은 경우 처음에는 문제가 발생하지 않습니다.
C:\Users\myuser> echo %DOW%
%DOW%
C:\Users\myuser> powershell
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Alle Rechte vorbehalten.
PS C:\Users\myuser> $dow = (get-date).dayofweek
PS C:\Users\myuser> [Environment]::SetEnvironmentVariable("DOW", $dow, "User")
PS C:\Users\myuser> [Environment]::SetEnvironmentVariable("DOW", $dow, "Process")
PS C:\Users\myuser> exit
C:\Users\myuser> echo %DOW%
%DOW%
C:\Users\myuser>
이 for
명령을 해결 방법으로 사용 하여 PowerShell 명령의 출력을 구문 분석하고 변수에 넣을 수 있습니다.
for /F "usebackq tokens=1" %%i in (`powershell ^(get-date^).dayofweek`) do set DOW=%%i
^
PowerShell 호출에서 괄호 특수 문자를 이스케이프하는 데 사용되는 캐럿 문자를 참고하십시오 .
배치 파일 컨텍스트가 아닌 명령 행에서 테스트하는 경우 %%
이전 변수 참조를 %
다음과 같이 바꿔야합니다 .
C:\Users\myuser> for /F "usebackq tokens=1" %i in (`powershell ^(get-date^).dayofw
eek`) do set DOW=%i
C:\Users\myuser> set DOW=Friday
C:\Users\myuser>