문제

벤더 앱을위한 패치 자동화 작업 중입니다.PowerShell을 사용하여 서버 목록을 반복하고 각 상자에 설치하려면 원격을 사용하십시오.그러나 한 측면이 나에게 큰 두통을주는 것입니다.설치 스크립트를 실행하기 전에 공급 업체가 제공 한 CMD 스크립트를 호출하여 설치 스크립트를 실행하기 전에 시스템 변수를 설정해야합니다.그래서 나는 PowerShell에서 그렇게 스크립트를 호출합니다 :

Invoke-Command -session $session {cmd /k ($args[0]+"\data\env.bat")} -Args $lesDestDir
.

PowerShell 창에서 작업을 완료하지만 설치 스크립트 IE에 대한 후속 호출은 다음과 같습니다.

Invoke-Command -session $session {perl ".\rollout-2010.pl " $args[0] " NC"} -Args $rollout
.

즉시 사용하는 다양한 시스템 변수가 설정되지 않았습니다.누군가가 시스템 변수의 범위를 설명 할 수 있습니까?invoke-mend가 완료된 후에도 중단합니까?두 번째 스크립트가 시스템 변수 또는 그와 비슷한 시스템 변수에 액세스 할 수 있도록 단일 Invoke-Command에서 두 개의 스크립트 호출을 함께 캐러 문자열해야합니까?

도움이 되었습니까?

해결책

SET 명령을 사용하여 변경 한 변경은 not 영구적으로 현재 cmd 프로세스에만 적용되며 cmd 프로세스가 종료 될 때까지 남아 있습니다.

가능한 경우 PowerShell 구문을 사용하여 환경 변수를 설정하십시오.

Invoke-Command -session $session {$env:myvar = 1}
.

다음과 같이 cmd 명령 구분 기호 코드를 사용하여 명령을 문자열 할 수 있습니다.

Invoke-Command -session $session {cmd /k "set myvar = 1" `& "set"}
.

다른 팁

예, 함께 문자열이 필요합니다.환경 변수가 종료되는 첫 번째 CMD 세션에서 설정되고 두 번째는 이들없이 시작됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top