PowerShell에서 FTP로 파일 업로드하는 방법
-
PowerShell에서 FTP로 파일을 업로드하기 위해
System.Net.WebClient
객체 사용하기 -
PowerShell에서 FTP로 파일을 업로드하기 위해
FtpWebRequest
객체 사용하기 - PowerShell에서 FTP로 여러 파일 업로드하기

FTP(파일 전송 프로토콜)는 컴퓨터 네트워크의 클라이언트와 서버 간에 파일을 전송하는 데 사용되는 표준 네트워크 프로토콜입니다. FTP 서버는 인터넷을 통한 파일 전송을 용이하게 하기 위한 일반적인 솔루션입니다.
우리는 FTP 서버에 파일을 업로드하고 FTP 서버에서 파일을 다운로드할 수 있습니다. PowerShell은 FTP 업로드 및 다운로드 작업을 자동화할 수 있는 스크립팅 도구입니다.
이 튜토리얼에서는 PowerShell을 사용하여 FTP 서버에 파일을 업로드하는 방법을 알려드립니다.
PowerShell에서 FTP로 파일을 업로드하기 위해 System.Net.WebClient
객체 사용하기
우리는 System.Net.WebClient
객체를 사용하여 FTP 서버에 파일을 업로드할 수 있습니다. 이 객체는 URI에 의해 식별된 모든 로컬, 인트라넷 또는 인터넷 리소스로부터 데이터를 전송하거나 수신합니다.
먼저 System.Net.WebClient
객체의 인스턴스를 만들고 이를 변수 $WebClient
에 할당해야 합니다. New-Object
cmdlet은 .NET 프레임워크 또는 COM 객체 인스턴스를 생성합니다.
$WebClient = New-Object System.Net.WebClient
이제 파일과 FTP URI를 지정합시다. 서버에 대한 유효한 사용자 이름과 비밀번호를 사용하세요. 따라서 $FTP
의 값을 귀하의 FTP 세부정보로 교체하십시오.
$File = "C:\New\car.png"
$FTP = "ftp://ftp_user:ftp_password@ftp_host/car.png"
그런 다음 FtpWebRequest
객체를 생성하고 아래와 같이 구성합니다. Credentials
속성은 FTP 서버에 연결하기 위한 자격 증명을 지정하는 데 사용됩니다.
UseBinary
속성은 파일 전송을 위한 데이터 유형을 지정하기 위해 Boolean 값을 설정합니다. True
는 전송할 데이터가 binary
임을 나타내고, false
는 전송할 데이터가 text
임을 나타냅니다.
이 방법은 파일을 수정하거나 변환 없이 전송하기 위해 이진 전송 모드를 사용합니다. 결과적으로 소스 컴퓨터의 동일한 파일이 서버에 업로드됩니다.
$FTPRequest = [System.Net.FtpWebRequest]::Create("$remote_file")
$FTPRequest = [System.Net.FtpWebRequest]$FTPRequest
$FTPRequest.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
$FTPRequest.Credentials = New-Object System.Net.NetworkCredential($username, $password)
$FTPRequest.UseBinary = $true
$FTPRequest.UsePassive = $true
# Read the file for upload
$FileContent = gc -en byte $local_file
$FTPRequest.ContentLength = $FileContent.Length
# Get stream request by bytes
$run = $FTPRequest.GetRequestStream()
$run.Write($FileContent, 0, $FileContent.Length)
# Cleanup
$run.Close()
$run.Dispose()
서버에 파일을 업로드하기 위해 FtpWebRequest
객체를 사용할 때, GetRequestStream
메서드를 호출하여 얻은 요청 스트림에 파일 내용을 작성해야 합니다.
스트림에 작성한 후 요청을 보내기 전에 스트림을 닫아야 합니다.
PowerShell에서 FTP로 여러 파일 업로드하기
가끔 FTP 서버에 여러 파일을 업로드해야 할 수도 있습니다. 파일을 하나씩 업로드하면 많은 시간이 걸리게 됩니다.
그래서 우리는 이 PowerShell 스크립트를 만들어 한 번에 여러 파일을 FTP 서버에 업로드할 수 있도록 하였습니다.
먼저 System.Net.WebClient
객체를 만들고 변수를 $WebClient
에 할당합니다.
$WebClient = New-Object System.Net.WebClient
업로드할 모든 파일이 있는 디렉토리를 지정하십시오.
$Dir = "C:\New"
그런 다음 귀하의 FTP 서버의 URI를 지정합니다.
$FTP = "ftp://ftp_user:ftp_password@ftp_host/docs/"