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
コマンドレットは、.NET Framework または 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
プロパティは、ファイル転送のデータタイプを指定するためのブール値を設定します。True
は、転送するデータがバイナリ
であることを示し、false
は、転送するデータがテキスト
であることを示します。
この方法は、変更または変換せずにファイルを転送するためにバイナリ転送モードを使用します。その結果、ソースコンピュータ上の同じファイルがサーバーにアップロードされます。
$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 サーバーに複数のファイルをアップロードする必要があるかもしれません。一度に 1つずつファイルをアップロードするのは、非常に時間がかかります。
そのため、1 回で FTP サーバーに複数のファイルをアップロードするためにこの PowerShell スクリプトを作成しました。
まず、System.Net.WebClient
オブジェクトを作成し、$WebClient
変数に割り当てます。
$WebClient = New-Object System.Net.WebClient
アップロードしたいすべてのファイルが存在するディレクトリを指定してください。
$Dir = "C:\New"
次に、あなたの FTP サーバーの URI を指定します。
$FTP = "ftp://ftp_user:ftp_password@ftp_host/docs/"