如何在Powershell的“ get-content命令”中传递变量

时间:2019-08-26 04:52:45

标签: powershell

我必须将特定文件从一个远程桌面获取到本地计算机或另一台服务器。如何在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
  

无法将参数绑定到参数“ Path”,因为它为null。       + CategoryInfo:InvalidData :( :) [获取内容],ParameterBindingValidationException       + FullyQualifiedErrorId:ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.GetContentCommand

2 个答案:

答案 0 :(得分:0)

尝试在 ScriptBlock

中定义变量
$Server="servername"
$answer=  Invoke-Command -Computername $Server -ScriptBlock{
$file="C:\Users\Documents\new DB_connection\\log2.txt";
get-content -path $file} 
write-output $answer

答案 1 :(得分:0)

您可以通过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和{ {1}},因此您必须在本地复制文件并使用两个会话,如下所示:

-FromSession