我必须将特定文件从一个远程桌面获取到本地计算机或另一台服务器。如何在get-content中传递变量以从远程桌面连接获取文件?

我将文件路径存储为变量,并尝试在get-content中传递它。

Invoke-Command -Computername $Server -ScriptBlock{get-content -path $file }
Invoke-Command -Computername $Server -ScriptBlock{get-content -path ${file} }

$file="C:\Users\Documents\new DB_connection\\log2.txt"

 $Server="servername"

 $answer=  Invoke-Command -Computername $Server -ScriptBlock{get-content -path $file }
write-output $answer

最佳答案

您可以通过PSSession而不是Invoke-Command复制文件。要从远程服务器复制到本地路径或其他远程服务器:

 $session = New-PSSession -ComputerName server.domain.tld
 Copy-Item -Source $originatingServerFilePath -Destination $localOrUNCFilePath -FromSession $session

如果需要将本地文件复制到目标服务器:
Copy-Item -Source $localFilePath -Destination $destinationServerFilePath -ToSession $session

这样做的好处是不会出现两次跳跃的情况,尽管在其上运行命令的服务器将需要有权访问任何远程文件路径。如果需要将文件从一台服务器复制到另一台服务器,但是目标服务器没有将文件路径公开为共享文件夹(或者您无权访问),则无法同时指定-ToSession-FromSession ,因此您必须在本地复制文件并使用两个 session ,如下所示:
$sourceSession = New-PSSession -ComputerName source.domain.tld
$destinationSession = New-PSSession -ComputerName destination.domain.tld

# Copy the remote file(s) from the source session to a local path first
Copy-Item -Source $sourceSessionFilePath -Destination $localTempFilePath -FromSession $sourceSession

# Copy the new local files to the destination session from your local path
Copy-Item -Source $localTempFilePath -Destination $destinationSessionFilePath -ToSession $destinationSession

09-11 15:35