Estoy escribiendo un PowerShell script de que quiero ejecutar desde el servidor A. Quiero conectarme al servidor B y copiar un archivo al servidor A como copia de seguridad.
Si eso no se puede hacer, me gustaría conectarme al servidor B desde el servidor A y copiar un archivo a otro directorio en el servidor B.
veo el Copy-Item
comando, pero no veo cómo darle un nombre de computadora.
Hubiera pensado que podría hacer algo como
Copy-Item -ComputerName ServerB -Path C:\Programs\temp\test.txt -Destination (not sure how it would know to use ServerB or ServerA)
¿Cómo puedo hacer esto?
powershell
powershell-2.0
chobo2
fuente
fuente
Respuestas:
Esto solo funciona cuando se ejecuta una sesión de PowerShell con el usuario que tiene derechos sobre ambos recursos compartidos administrativos.
Sugiero usar un recurso compartido de red regular en el servidor B con acceso de solo lectura para todos y simplemente llamar (desde el servidor A):
fuente
Copy-Item -FromSession
).De PowerShell versión 5 en adelante (incluido en Windows Server 2016, descargable como parte de WMF 5 para versiones anteriores ), esto es posible con la comunicación remota. El beneficio de esto es que funciona incluso si, por cualquier motivo, no puede acceder a los recursos compartidos.
Para que esto funcione, la sesión local donde se inicia la copia debe tener instalado PowerShell 5 o superior. La sesión remota no necesita tener instalado PowerShell 5; funciona con versiones de PowerShell tan bajas como 2 y versiones de Windows Server tan bajas como 2008 R2.[1]
Desde el servidor A, cree una sesión en el servidor B:
Y luego, todavía de A:
La copia de elementos a B se hace con
-ToSession
. Tenga en cuenta que las rutas locales se utilizan en ambos casos; tienes que realizar un seguimiento del servidor en el que estás.[1]: al copiar desde o hacia un servidor remoto que solo tiene PowerShell 2, tenga cuidado con este error en PowerShell 5.1 , que en el momento de escribir esto significa que la copia recursiva de archivos no funciona
-ToSession
, una copia aparentemente no funciona en todo con-FromSession
.fuente
scp
lo largossh
de Linux ... no hay necesidad de molestarse con acciones molestos!Utilice
net use
oNew-PSDrive
para crear una nueva unidad:New-PsDrive: cree un nuevo PsDrive solo visible en el entorno de PowerShell:
Uso neto: cree una nueva unidad visible en todas las partes del sistema operativo.
fuente
New-PSDrive : A specified logon session does not exist. It may already have been terminated
-> Creo que una sesión anterior todavía está en curso -> Así que intenté usarRemove-PSDrive
-> todavía no funciona. Tampoconet use <driveLetter> /delete
ayudó. ¿Alguna otra cosa que pueda hacer para poder ejecutar este comando en una configuración de compilación de software?New-PSDrive
dos veces que debería haberlo hechoA drive with the name 'Y' already exists.
En caso de que el archivo remoto necesite su credencial para acceder, puede generar un objeto System.Net.WebClient usando el cmdlet New-Object para "Copiar archivo de forma remota", así
O si necesita cargar un archivo, puede usar UploadFile:
fuente
Ninguna de las respuestas anteriores funcionó para mí. Seguí recibiendo este error:
Entonces esto lo hizo por mí:
Luego, desde mi host, mi máquina en el cuadro Ejecutar, acabo de hacer esto:
fuente