PowerShell에서 변수에 저장된 명령 실행 변수에 빌드하고 저장

PowerShell의 변수에 빌드하고 저장 한 명령이 있습니다. 이 명령은 Write-Host 를 수행하고 표준 cmd.exe창에 복사하여 붙여 넣을 경우 작동합니다 .

스크립트 내에서이 명령을 어떻게 실행합니까?

나는 Invoke-Command 또는 Invoke-Expression의 여러 조합을 운없이 시도했습니다.

이것이 내가 변수를 만든 방법입니다.

$cmd1 = $arcprg + $arcdir + "\" + $site1 + "-" + $hst + "-" + $yesterday + ".zip " + $logpath1 + "u_ex" + $yesterday + ".log"

변수가 화면에 인쇄되면 다음과 같이 나타납니다.

7z.exe a -tzip c:\arc_logs\site-host-at-web1-100827.zip c:\inetpub\logs\logfiles\w3svc1\u_ex100827.log



답변

다음은 Invoke-Expression두 가지 변수가 없는 또 다른 방법입니다 (command : string 및 parameters : array). 그것은 나를 위해 잘 작동합니다. 7z.exe시스템 경로에 있다고 가정하십시오
.

$cmd = '7z.exe'
$prm = 'a', '-tzip', 'c:\temp\with space\test1.zip', 'C:\TEMP\with space\changelog'

& $cmd $prm

명령이 알려져 있고 (7z.exe) 매개 변수 만 변수이면이 작업이 수행됩니다.

$prm = 'a', '-tzip', 'c:\temp\with space\test1.zip', 'C:\TEMP\with space\changelog'

& 7z.exe $prm

Invoke-Expression하나의 매개 변수가있는 BTW 도 나에게 효과적입니다.

$cmd = '& 7z.exe a -tzip "c:\temp\with space\test2.zip" "C:\TEMP\with space\changelog"'

Invoke-Expression $cmd

추신 : 나는 일반적으로에 대한 표현식을 작성하는 것보다 프로그래밍 방식으로 작성하는 것이 더 쉽기 때문에 매개 변수 배열을 선호합니다 Invoke-Expression.


답변

다음을 사용하여 명령을 호출하십시오 Invoke-Expression.

Invoke-Expression $cmd1

내 컴퓨터에서 작동하는 예는 다음과 같습니다.

$cmd = "& 'C:\Program Files\7-zip\7z.exe' a -tzip c:\temp\test.zip c:\temp\test.txt"
Invoke-Expression $cmd

iex당신이 할 수 있는 별칭 입니다 Invoke-Expression:

iex $cmd1

전체 목록 : https://ss64.com/ps/ 에서 자세한 Powershell내용을 확인하십시오.

행운을 빕니다…


답변