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
내용을 확인하십시오.
행운을 빕니다…