title: FTPS Upload in Powershell
body: <p>I'm in the process of learning Powershell, and am working on a little script that will upload a group of files to an FTPS server nightly. The files are located on a network share in a sub-directory containing the date in the name. The files themselves will all begin with the same string, let's say "JONES_". I have this script working for FTP, but I don't quite get what I need to do to get it to work for FTPS:</p>
  
  <pre><code># Set yesterday's date (since uploads will happen at 2am)
  $YDate = (Get-Date).AddDays(-1).ToString('MM-dd-yyyy')
  
  #Create Log File
  $Logfile = "C:\powershell\$YDate.log"
  Function LogWrite
  {
      Param ([string]$logstring)
  
      Add-Content $Logfile -value $logstring
  }
  
  
  # Find Directory w/ Yesterday's Date in name
  $YesterdayFolder = Get-ChildItem -Path "\\network\storage\location" | Where-Object {$_.FullName.contains($YDate)}
  
  
  If ($YesterdayFolder) {
  
      #we specify the directory where all files that we want to upload are contained 
      $Dir= $YesterdayFolder
      #ftp server
      $ftp = "ftp://ftps.site.com"
      $user = "USERNAME"
      $pass = "PASSWORD"
  
      $webclient = New-Object System.Net.WebClient 
      $webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass)
  
  
  $FilesToUpload = Get-ChildItem -Path (Join-Path $YesterdayFolder.FullName "Report") | Where-Object {$_.Name.StartsWith("JONES","CurrentCultureIgnoreCase")}
  foreach($item in ($FilesToUpload))
      { 
          LogWrite "Uploading file:  $YesterdayFolder\Report\$item"
          $uri = New-Object System.Uri($ftp+$item.Name) 
          $webclient.UploadFile($uri, $item.FullName)  
      }
      } Else {
          LogWrite "No files to upload"
      }
  </code></pre>
  
  <p>I'd rather not have to deal with a 3rd party software solution, if at all possible. </p>