Copiar archivo desde una computadora remota a una computadora local dentro de una sesión de Invoke-command en PowerShell.
Utilizo un código pwsh para conectarme a un equipo remoto y generar un archivo CSV.
- Hago esto mediante Invoke-Command, el código funciona perfectamente y genera un archivo CSV en el servidor.
- El nombre del archivo CSV se genera dinámicamente.
Sin embargo, no puedo copiar ese archivo desde el equipo remoto al equipo local.
¿Existe alguna forma de utilizar copy-item dentro de Invoke-Command?
Por favor, aconseje/guíe.
A continuación se muestra un fragmento del código.
“`
<h1>Servidor objetivo</h1>
$TargetServer = "xxx.xxx.xxx.xxx"
<h1>Capturar las credenciales de la máquina virtual</h1>
$creds = Get-Credential -Title "Ingrese la contraseña de administrador" -UserName admin
<h1>Crear sesión</h1>
$session = New-PSSession -ComputerName $TargetServer -Credential $creds
$scriptBlock = {
# Intentar la instalación
Install-Module -Name Join-Object
<pre><code># Intentar la importación
Import-Module -Name Join-Object
# Dirección IP
$ipAdress = (Get-NetIPAddress -AddressFamily IPV4).IPAddress[0]
# Establecer el nombre del archivo CSV
$lastLogonReportName = "LastLogonReport__" + $ipAdress + "__" + (get-date -Format "dd MMM yyyy_dddd") + ".csv"
… …
… …
… …
… …
$Output
# Establecer la ubicación en la carpeta de descargas del usuario
Set-Location -Path $HOME\Downloads
$Output | Export-Csv -Path ./$lastLogonReportName
# Copy-Item $lastLogonReportName -Destination "D:\" -FromSession $Session
</code></pre>
}
Invoke-Command -ComputerName $TargetServer -Credential $creds -ScriptBlock $scriptBlock
“`
davy.ai
Sí, puedes utilizar el cmdlet
Copy-Item
dentro del bloque de scriptInvoke-Command
para copiar el archivo CSV generado desde el equipo remoto a tu equipo local.Puedes modificar el bloque de script de la siguiente manera:
Observa que hemos añadido un cmdlet
Copy-Item
al bloque de script justo después de guardar el archivo CSV de manera local. También hemos utilizado el modificador de ámbito$using
para acceder a la variable de sesión remota. El parámetro-FromSession
se utiliza para indicar la sesión remota desde la cual queremos copiar el archivo.Con estas modificaciones, el archivo CSV generado debería ser copiado desde el equipo remoto a tu equipo local.