PowerShell – Descargar todos los archivos de una carpeta ftp

Crear un script para descargar un archivo en concreto de un ftp es bastante sencillo y encontramos muchos ejemplos. Desde una máquina Windows, si queremos descargar todos los archivos de una carpeta en concreto de un servidor ftp sin saber el nombre de cada uno de los archivos ya es un poco más complicado.

A través de una consulta en http://stackoverflow.com/ he encontrado un script en PowerShell fantástico que funciona a las mil maravillas:

	
  #FTP Server Information - SET VARIABLES
    $ftp = "ftp://ftp.myserver.com" 
    $user = 'user' 
    $pass = 'password'
    $folder = 'Folder'
    $target = "C:\test\"


    #SET CREDENTIALS
    $credentials = new-object System.Net.NetworkCredential($user, $pass)

    function Get-FtpDir ($url,$credentials) {
        $request = [Net.WebRequest]::Create($url)
        $request.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
        if ($credentials) { $request.Credentials = $credentials }
        $response = $request.GetResponse()
        $reader = New-Object IO.StreamReader $response.GetResponseStream() 
        $reader.ReadToEnd()
        $reader.Close()
        $response.Close()
    }

    #SET FOLDER PATH
    $folderPath= $ftp + "/" + $folder + "/"

    $Allfiles=Get-FTPDir -url $folderPath -credentials $credentials
    $files = ($Allfiles -split "`r`n")

    $files 

    $webclient = New-Object System.Net.WebClient 
    $webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass) 
    $counter = 0
    foreach ($file in ($files)){
        $source=$folderPath + $file  
        $destination = $target + $file 
        $webclient.DownloadFile($source, $target+$file)

        #PRINT FILE NAME AND COUNTER
        $counter++
        $counter
        $source
    }



En este caso en el propio script le asignamos los valores de los parámetros, se podría modificar y pasar los parámetros al ejecutar.


Script vía Vía: http://stackoverflow.com/questions/19059394/powershell-connect-to-ftp-server-and-get-files



Si el post te ha ayudado a salir de un marrón, te ha servido pá lo que sea o simplemente te ha gustado y quieres colaborar puedes pinchar en los anuncios ;)


Batch para comprobar el estado de servicios Windows

Arrancar y detener servicios Windows.
NET START
NET STOP

Batch que permite comprobar el estado de un servicio Windows determinado y arrancarlo en caso de no estar en marcha.
Vamos a utilizar el comando sc query que nos da información del estado de los servicios.

	
for /F "tokens=3 delims=: " %%H in ('sc query NOMBRE_SERVICIO ^| findstr "  ESTADO"') do (
  if /I "%%H" NEQ "RUNNING" (
     net start NOMBRE_SERVICIO
  )
)

¿Cómo hacer que un servicio Windows esté siempre arrancado?
Con el batch anterior, ejecutándolo de forma periódica a través de una tarea programa de Windows.




Modificándolo ligeramente lo podemos usar para detener un servicio, en caso de no estarlo.

	
for /F "tokens=3 delims=: " %%H in ('sc query NOMBRE_SERVICIO ^| findstr "  ESTADO"') do (
  if /I "%%H" == "RUNNING" (
     net stop NOMBRE_SERVICIO
  )
)





Si el post te ha ayudado a salir de un marrón, te ha servido pá lo que sea o simplemente te ha gustado y quieres colaborar puedes pinchar en los anuncios ;)



Ejemplos robocopy con uso de parámetros de exclusión

Listo varios ejemplos de uso de robocopy utilizando los diferentes parámetros de exclusión disponibles.


Exlcuir todos los archivos con extensión .txt, copia recursiva (/E), si los archivos .txt ya existen en el destino no los elimina:

> robocopy c:\origen\ e:\destino\ /E /XF *.txt

Aún usando el parámetro /MIR si los archvos .txt ya existen en el destino no se eliminan:

> robocopy c:\origen\ e:\destino\ /MIR /E /XF *.txt



Ecluir todos los archivos recursivamente, es como hacer una copia de la estructura de carpetas:

> robocopy c:\origen\ e:\destino\ /E /XF * 



Ecluir una carpeta, si ya existe en el destino no se elimina:

> robocopy c:\origen\ e:\destino\ /E /XD "C:\origen\capreta1"

Ecluir varias carpetas, si ya existen en el destino no se eliminan:

> robocopy c:\origen\ e:\destino\ /E /XD "C:\origen\capreta1" "C:\origen\capreta2"





Si el post te ha ayudado a salir de un marrón, te ha servido pá lo que sea o simplemente te ha gustado y quieres colaborar puedes pinchar en los anuncios ;)


Como crear un plan de copias de seguridad usando robocopy y forfiles

Plataforma: Windows
Objetivo
Configurar un .bat que copie backups SQL que se guardan en local en un máquina y copiarlos en una unidad de red. Se quieren guardar los últimos 8 backups, pero en local sólo caben 3.

Prerrequisitos
Carpeta origen: C:\BackupSQL\
Carpeta destino: \\192.168.1.10\Servidor\Copias\
En la máquina en local sólo se guardan los 3 últimos backups
En la unidad de red queremos tener los últimos 8 backups

Continue reading


Ejemplos Robocopy

Ejemplo Robocopy 1
Copiar la estructura de carpetas recursivamente, sin los archivos que pueda haber, sólo las carpetas vacías:
·El parámetro /XF * excluye todos archivos
·El parámetro /E copia subdirectorios
·El parámetro /Z indica que es modo reiniciable, es caso de pérdida de conexión continúa donde estaba
Origen d:
Destino f:

> robocopy d:\CarpetaA\ f:\CarpetaANoFiles\ /E /Z /XF *	

Si además queremos generar un log añadimos el parámetro /LOG:nombreArchivoLog.txt: Continue reading


nslookup – testear registros DNS MX desde la línia de comandos Windows

Aplicable a Windows XP y Windows 7

Como testear los registros DNS de correos(MX) des de la línia de comandos?

Opción1:
En la línia de comandos accedemos al comando nslookup
C:\Users\Administrador>nslookup
Especificamos el tipo de registros, en nuestro caso MX
> set type=MX
Testeamos las DNS MX de por ejemplo marca.com
> marca.com
nslookup1

Opción2:
Con el comando nslookup passandole como paramteros el tipo de registro y el dominio:
C:\Users\Administrador>nslookup -type=MX marca.com


Cómo eliminar archivos en función de la extension

Aplicable a Windows Server 2008 y Windows Server 2008 R2

EL comando forfiles de Windows nos permite hacer una búsqueda en función de la extensión de los archivos y luego eliminarlos.

Por ejemplo, queremos eliminar todos los archivos con extensión .tmp de la carpeta c:\Windows\temp\
Primero listamos todos los archivos para comprobar que realmente la búsqueda es correcta antes de eliminar los documentos:

> forfiles /p "%systemroot%temp" /m *.tmp /C "cmd /c echo @file"

Si la búsqueda es correcta añadimos & Del @file para eliminarlos

> forfiles /p "%systemroot%temp" /m *.tmp /C "cmd /c echo @file & Del @file"

Parámetros:
· /p –> especifica la ruta donde se va a iniciar la búsqueda. Por defecto empieza en el directorio de trabajo actual.
· /m –> especifica el tipo de archivos. Si no se especifica busca cualquier tipo(*.*).
· /c –> para ejecutar comandos