본문 바로가기
  • _^**_
무근본 IT 지식 공유/무근본 운영체제(OS)

Windows Powershell 에서 curl 명령 사용시 유의할점!!

by 크리드로얄워터 2024. 3. 20.
반응형
윈도우 PowerShell에서 `curl` 명령어를 사용할 때, 몇 가지 중요한 차이점이 있습니다.


기본적으로, PowerShell에서 `curl`은 실제로 `curl` 명령어 자체가 아닌 `Invoke-WebRequest`라는 PowerShell cmdlet의 별칭으로 매핑되어 있습니다.



이로 인해 Linux에서 `curl`로 사용되는 옵션과 매개변수가 PowerShell에서 직접적으로 동일하게 작동하지 않을 수 있습니다.

예를 들어, `-k` 옵션은 `curl`에서 SSL 인증서 검증을 비활성화하는 데 사용되지만, PowerShell의 `Invoke-WebRequest`에서는 `-SkipCertificateCheck` 매개변수를 사용하여 같은 기능을 수행합니다. `-F` 옵션은 `curl`에서 멀티파트/폼-데이터를 보내는 데 사용되지만, `Invoke-WebRequest`에서는 `-Form` 매개변수를 사용하여 유사한 작업을 수행합니다.


PowerShell에서 `curl` 사용 시의 예


SSL 인증서 검증을 건너뛰고 싶을 때


  #powershell

  Invoke-WebRequest -Uri "https://example.com" -SkipCertificateCheck



멀티파트/폼-데이터를 보낼 때


  #powershell

  Invoke-WebRequest -Uri "https://example.com/upload" -Method Post -Form @{file = Get-Item "path\to\file"}

  

실제 `curl`을 PowerShell에서 사용하려면, 다음과 같이 풀 경로를 사용하거나,

Linux와 같은 옵션을 사용하려면 Linux 환경에서 실행되는 `curl`의 Windows 버전을 설치해야 할 수 있습니다:

#powershell

C:\Path\to\curl.exe -k -F "key=value"


혹은 최근 버전의 Windows 10 및 Windows 11에서는 Windows Subsystem for Linux (WSL)을 설치하여,

Linux 배포판 내에서 직접 Linux 버전의 `curl`을 사용할 수도 있습니다.


직접 `curl` 명령어 사용하기


Windows에서 직접 `curl`을 사용하고 싶다면, PowerShell 대신 cmd(명령 프롬프트)를 사용하거나,

PowerShell 내에서 `curl.exe`라고 명확하게 지정해야 할 수도 있습니다.

이렇게 하면 Windows가 PowerShell cmdlet 대신 실제 `curl` 실행 파일을 사용하게 됩니다.


이 외 해볼 수 있는 고민


Q1:PowerShell에서 웹 요청을 보낼 때 인증 헤더를 추가하는 방법은 무엇인가요?

Q2:PowerShell에서 REST API를 호출하고 JSON 응답을 처리하는 예제는 어떻게 될까요?

Q3:Windows Subsystem for Linux (WSL)을 설치하고 사용하는 기본 단계는 무엇인가요?

반응형

댓글