batch-file
배치 파일 및 Powershell 하이브리드
수색…
임시 파일과 함께 Powershell 실행
이것은 다른 하이브리드 주제에서 반복해서 언급되었습니다. PowerShell을 실행하기위한 오래된 방법이지만 쉬운 방법은 다음과 같습니다.
- Powershell 스크립트를 임시 스크립트로
echo
- 임시 스크립트 실행
- 선택적으로 임시 스크립트를 제거하십시오.
이것은 샘플 스크립트입니다.
@echo off
echo powershell-command>Temp.ps1
echo another line>>Temp.ps1
rem echo the script into a temporary file
powershell -File Temp.ps1
rem execute the temporary script
del Temp.ps1
rem Optionally remove the temporary script
위의 방법은 긴 스크립트가 필요한 경우 echo
문이 필요합니다. @Aacini가 제안하는 더 좋은 방법입니다.
@echo off
setlocal
rem Get the number of the "<resource>" line
for /F "delims=:" %%a in ('findstr /N "<resource>" "%~F0"') do set "start=%%a"
rem Skip such number of lines and show the rest of this file
(for /F "usebackq skip=%start% delims=" %%a in ("%~F0") do echo %%a) > Temp.ps1
powershell -File Temp.ps1
del /f /s /q Temp.ps1
goto :EOF
<resource>
PS
Powershell script
POWERSHELL 명령을 사용하여 한 줄 Powershell 명령 실행
POWERSHELL
명령을 사용하면 임시 파일없이 배치 스크립트에서 직접 1 행 명령을 실행할 수 있습니다.
여기에 구문이 있습니다.
powershell.exe -Command <yourPowershellCommandHere>
실제 결과를 향상 시키려면 -Nologo
와 같은 다른 플래그를 포함 할 수도 있습니다.
임시 파일없이 Powershell / 배치 하이브리드
이것은 stackoverflow 사용자 rojo 가 제안한 접근법으로 명령 행 인수도 처리 할 수 있습니다.
<# : batch portion
@echo off & setlocal
(for %%I in ("%~f0";%*) do @echo(%%~I) | ^
powershell -noprofile "$argv = $input | ?{$_}; iex (${%~f0} | out-string)"
goto :EOF
: end batch / begin powershell #>
"Result:"
$argv | %{ "`$argv[{0}]: $_" -f $i++ }
이렇게 호출 :
psbatch.bat arg1 "이것은 arg2입니다"arg3
생산할 것이다 :
Result:
$argv[0]: C:\Users\rojo\Desktop\test.bat
$argv[1]: arg1
$argv[2]: This is arg2
$argv[3]: arg3
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow