Questo PowerShell usa il comando Invoke-WebRequest per salvare un file con il suo nome originale contenuto nell'header Content-Disposition

PowerShell: download con nome

$Url = "https://localhost:44316/download/file000"

# creo un nome temporaneo
$fileNameTemp = "$(New-Guid).tmp"
$fileNameTemp

# eseguo il download (GET) del file (OutFile) facendomi ritornare l'oggetto (PassThru)
$Response = Invoke-WebRequest -Uri $Url -OutFile $fileNameTemp -PassThru

# status della richiesta OK=200
$Response.StatusCode

# ricavo il nome del file
$ContentDisposition = [System.Net.Mime.ContentDisposition]::new($Response.Headers["Content-Disposition"])
$fileName = $ContentDisposition.FileName

# rinomino il file temporaneo con il nome corretto
Rename-Item -Path $fileNameTemp -NewName $fileName

# visualizzo il nome
$fileName
Il file viene salvato nella directory corrente

Se il file fosse disponibile solo in POST, va cambiato il metodo (-Method) e passato un oggetto nel body (-Body)

PowerShell: Download in POST

$Url = "https://localhost:44316/download"

#parametri della richiesta POST
$Params = @{
    fileKey="F9541E42E44D7CF0B034AF4AA210AC13"
}

# creo un nome temporaneo
$fileNameTemp = "$(New-Guid).tmp"
$fileNameTemp

# eseguo il download (POST) del file (OutFile) facendomi ritornare l'oggetto (PassThru)
$Response = Invoke-WebRequest -Uri $Url -Method POST -Body $Params -OutFile $fileNameTemp -PassThru

# status della richiesta OK=200
$Response.StatusCode

# ricavo il nome del file
$ContentDisposition = [System.Net.Mime.ContentDisposition]::new($Response.Headers["Content-Disposition"])
$fileName = $ContentDisposition.FileName

# rinomino il file temporaneo con il nome corretto
Rename-Item -Path $fileNameTemp -NewName $fileName

# visualizzo il nome
$fileName
Tags:
PowerShell200 Script85
Potrebbe interessarti anche: