引数でアップロードするファイル指定するバージョン
hogehoge.ps1として保存
foreach ($arg in $args) { [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} $filename = $(Get-ChildItem $arg).Name #「検証プロシージャによると、リモート証明書は無効です。」みたいなエラーが出たら、サーバー証明書の警告を無視するようにスクリプト内で宣言 [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} $ftpReq = [System.Net.FtpWebRequest]::Create("ftp://FTPサーバーのアドレス/" + $filename) $ftpReq.Credentials = New-Object System.Net.NetworkCredential("ユーザー名","パスワード") $ftpReq.Method = [System.Net.WebRequestMethods+ftp]::UploadFile $ftpReq.EnableSsl = $true $ftpReq.KeepAlive = $true $ftpReq.UseBinary = $true $ftpReq.UsePassive = $true $ftpReq.TimeOut = 10000 $stream = $ftpReq.GetRequestStream() $fileStream = New-Object System.IO.FileStream($zipfile, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read) $bytes = New-Object System.Byte[](1024) while($true){ $size = $fileStream.Read($bytes, 0, $bytes.Length) if($size -eq 0){ break; } $stream.Write($bytes, 0, $size) } $fileStream.Close() $stream.Close() }
batファイルでは
PowerShell -ExecutionPolicy RemoteSigned -file hogehoge.ps1 アップロードしたいファイル名