File Transfers

Send-FilesFile uploads local files, or bytes from a stream, to Files.com. Receive-FilesFile downloads a file to a local file or into a stream. Both use the current connection, accept -WhatIf and -Confirm, and take -Connection and -WorkspaceScope like the other commands.

Transfers tune themselves. Uploads choose settings for the destination and send parts in parallel when supported. Downloads use parallel parts where storage supports ranges and reliable version checks; otherwise, they fetch the whole file in one response. Temporary failures are retried within the configured limit. Start with the paths; most scripts need no concurrency or retry settings.

Both cmdlets show PowerShell's progress bar when your host and $ProgressPreference allow it. Small transfers can finish before the bar appears.

Uploading a File

Send-FilesFile -Path ./report.csv -RemotePath reports/2026/report.csv -MkdirParents

This uploads report.csv, creating the reports/2026 folders if they are missing.

To upload every file in a folder, pipe the files to Send-FilesFile:

Get-ChildItem ./exports -File | Send-FilesFile -RemotePath { "exports/$($_.Name)" } -PassThru

-PassThru writes each completed upload.

Downloading a File

Receive-FilesFile -RemotePath reports/2026/report.csv -LiteralPath ./report.csv

This writes report.csv and fails if the file already exists. Add -Force to replace it.

To download every file in a remote folder into a local folder, create the local folder first. Receive-FilesFile saves files into a local folder only when that folder already exists:

New-Item -ItemType Directory -Path ./downloads -Force | Out-Null
Get-FilesChildItem -Path reports/2026 | Where-Object Type -EQ file | Receive-FilesFile -LiteralPath ./downloads -Force

Upload Startup

Omit -AggressiveStartup to keep the default startup, which probes eligible connections before increasing parallelism. On a known high-throughput network, enable the switch to skip those initial probes; it takes no value:

Send-FilesFile -Path ./backup.zip -RemotePath backups/backup.zip -AggressiveStartup

The switch applies only where the transfer engine selects its scaled parallel-upload policy. Other destinations, including Agents, keep their own starting settings. Both startups use the same adaptive behavior, limits, retries and backoff; the default can reach the same concurrency ceiling. -MaxConcurrency still caps the transfer. For Send-FilesFile, do not enable -AggressiveStartup with static concurrency, -PerformanceProfile or -AutomaticConcurrency, which choose their own start. Send-FilesDirectory also accepts -AggressiveStartup and shares that startup across its files. Downloads have no upload-startup switch.

More Transfer Options

The Send-FilesFile and Receive-FilesFile references, also shown by Get-Help Send-FilesFile -Full and Get-Help Receive-FilesFile -Full, describe concurrency, part sizing, transfer limits, and checkpoints, which let a stopped transfer continue when you run the same command again. The module also includes Send-FilesDirectory and Receive-FilesDirectory for whole folders.