引数でアップロードするファイル指定するバージョン
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 アップロードしたいファイル名