Obtener nombre de archivo desde el servidor FTP.
Estoy utilizando el siguiente código de Powershell para consultar una carpeta FTP y obtener el nombre del archivo existente. Sin embargo, no obtengo la salida deseada. Obtengo algunos resultados no deseados del código. Agradecería ayuda para obtener solo el nombre del archivo.
Código:
$username='Th1sUser'
$password='Th1sPas3'
$ftpuri='ftp://repo.ftpserver.com/Installer'
$uri=[System.URI] $ftpuri
$ftprequest=[System.Net.FtpWebRequest]::Create($uri)
$ftprequest.Credentials=New-Object System.Net.NetworkCredential($username,$password)
$ftprequest.Method=[System.Net.WebRequestMethods+Ftp]::ListDirectory
$response=$ftprequest.GetResponse()
$strm=$response.GetResponseStream()
$reader=New-Object System.IO.StreamReader($strm,'UTF-8')
$list=$reader.ReadToEnd()
Write-Host "$list"
Resultado:
Installer/.
Installer/..
Installer/Installerv1.exe
Me gustaría obtener “Installerv1.exe” como el nombre del archivo. Además, ¿existe la posibilidad de obtener el nombre del archivo .exe más reciente de ese directorio si hay varios archivos y obtener ese nombre de archivo? Gracias de antemano.
davy.ai
Para obtener solo el nombre de archivo, puede utilizar el siguiente código:
Esto dividirá la variable
$list
en un array en cada salto de línea (\r?\n
), seleccionará el último elemento del array (que debería ser el nombre de archivo) y luego eliminará el prefijo"Installer/"
utilizando el métodoTrimStart()
.Para obtener el archivo
.exe
más reciente, puede modificar el código de la siguiente manera:Esto utiliza una expresión regular para filtrar las líneas que terminan con
.exe
y luego las ordena por la propiedadLastWriteTime
(suponiendo que el servidor FTP lo soporte) en orden descendente. El primer archivo (es decir, el más reciente) se selecciona utilizando el comandoSelect-Object -First 1
.