source

PowerShell의 변수에 저장된 명령 실행

manycodes 2023. 4. 26. 23:29
반응형

PowerShell의 변수에 저장된 명령 실행

PowerShell의 변수에 빌드하고 저장한 명령이 있습니다. 명령은 쓰기 호스트를 수행하고 표준에 복사하여 붙여넣을 경우에 작동합니다.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두 개의 변수(명령: 문자열 및 매개 변수: 배열)를 사용합니다.저한테는 잘 맞습니다.추정하다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하나의 매개 변수로 나에게도 작동합니다. 예를 들어, 이것이 작동합니다.

$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물건.

행운을 빕니다...

언급URL : https://stackoverflow.com/questions/3592851/executing-a-command-stored-in-a-variable-from-powershell

반응형