Subir conjunto de archivos utilizando WinSCP. Sesión en PowerShell.
Estoy tratando de cargar tres archivos específicos y recibir comentarios sobre las tres transferencias.
Con el código que tengo, solo obtengo:
Carga de \xxxxxxxxxxxxxxxxxxx\Customerlocations.txt exitosa
Entiendo que no está agregando transferencias a la sesión, sino reemplazándola cada vez.
Simplemente no sé cómo ajustarlo para obtener 3 transferencias en $transferResult.Transfers.
¿Alguien puede indicarme la dirección correcta?
“`
<h1>Configurar opciones de sesión</h1>
$sessionOptions = New-WinSCPSessionOption -Protocol Ftp <code>
-FtpSecure Implicit</code>
-Credential xxxxxxxxxxxxxxxxxxx <code>
-HostName "xxxxxxxxxxxxxxxxxxx "</code>
-TlsHostCertificateFingerprint "xxxxxxxxxxxxxxxxxxx "
$session = New-Object WinSCP.Session
$session.ExecutablePath = "C:\xxxxxxxxxxxxxxxxxxx\WinSCP.exe"
try
{
# Conectar
$session.Open($sessionOptions)
<pre><code># Descargar archivos
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
$transferResult =
$session.PutFiles("\\xxxxxxxxxxxxxxxxxxx\Orders.txt", "/Orders.txt", $False, $transferOptions)
$transferResult =
$session.PutFiles("\\xxxxxxxxxxxxxxxxxxx\Assortment.txt", "/Assortment.txt", $False, $transferOptions)
$transferResult =
$session.PutFiles("\\xxxxxxxxxxxxxxxxxxx\Customerlocations.txt", "/Customerlocations.txt", $False, $transferOptions)
# Lanzar error en caso de cualquier error
$transferResult.Check()
# Imprimir resultados
foreach ($transfer in $transferResult.Transfers)
{
Write-Host "Carga de $($transfer.FileName) exitosa"
}
# Desconectar, limpiar
$session.Dispose()
</code></pre>
}
finally
{
$session.Dispose()
}
“`
davy.ai
Para cargar los tres archivos y obtener comentarios para cada transferencia, debes agregar cada llamada de
PutFiles
a la misma variable$transferResult
en lugar de sobrescribirla cada vez. Modifica el código de la siguiente manera:Al utilizar el operador
+=
para agregar a$transferResult
, cada llamada aPutFiles
agrega transferencias a la misma variable. Luego, el bucleforeach
itera sobre cada transferencia en$transferResult.Transfers
y muestra el nombre de archivo y el estado de éxito.