domingo, 24 de marzo de 2019

Transferir archivos con PowerShell usando WinRM

Mover archivos con PowerShell es sencillo siempre que tengamos acceso vía SMB al servidor remoto. Por ejemplo, para copiar la carpeta "C:\Tools" y todo su contenido (-Recurse) al servidor FILESERVER por SMB, basta con el siguiente comando:

Copy-Item -Path "C:\Tools" -Destination "\\FILESERVER\C$" -Recurse

El comando asume que las credenciales utilizándose son válidas en el equipo remoto. En caso de que el servidor no tenga habilitado el SMB, puede lograrse lo mismo mediante WinRM. Los requisitos son los siguientes:


  • PowerShell 5.0 en el equipo local y en el remoto
  • WinRM debe estar habilitado (Viene configurado por defecto desde Windows Server 2012 en adelante, en caso de que esté deshabilitado puede habilitarse con Enable-PSRemoting -Force)
  • Los puertos 5985 (HTTP) y 5986 (HTTPS) deben estar habilitados.
  • Ambos equipos deben estar en dominio. Si la estación de trabajo desde donde se está administrando el servidor está en un grupo de trabajo, seguir las siguientes instrucciones.

Primero, crear una sesión remota y guardarla dentro de una variable:

$FileSession = New-PSSession –ComputerName FILESERVER

El comando es muy similar al anterior, el único cambio es que en este caso utilizamos el parametro ToSession y le pasamos la variable de la sesión creada previamente:

Copy-Item –Path "C:\Tools" –Destination 'C:\' –ToSession $FileSession -Recurse

A pesar de ser similar al comando anterior, esta vez la transferencia se realizó vía WinRM. Una vez terminada la transferencia, es buena practica remover la sesión que creamos:

$FileSession | Remove-PSSession

0 comentarios:

Publicar un comentario