通过PSSession发送文件

kal*_*zel 20 powershell winrm

我只是花了几个小时寻找一个通过活动的PSSession发送文件的解决方案.结果是nada,niente.我正在尝试通过活动会话在远程计算机上调用命令,该活动会话应从网络存储中复制某些内容.所以,基本上就是这样:

icm -Session $s {
Copy-Item $networkLocation $PCLocation }
Run Code Online (Sandbox Code Playgroud)

由于"第二跳"问题,我不能直接这样做,因为我正在运行win server 2003,我无法启用CredSSP.我可以先将文件复制到我的电脑然后发送/推送到远程机器,但是如何?我尝试过PModem,但是我看到它只能拉数据而不是推送.

任何帮助都是适用的.

Dav*_*ner 37

现在可以在PowerShell/WMF 5.0中使用它

Copy-Item-FromSession-toSession参数.您可以使用其中一个并传入会话变量.

例如.

$cs = New-PSSession -ComputerName 169.254.44.14 -Credential (Get-Credential) -Name SQL
Copy-Item Northwind.* -Destination "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\" -ToSession $cs
Run Code Online (Sandbox Code Playgroud)

有关更多示例,请访问https://richardspowershellblog.wordpress.com/2015/05/28/copy-files-over-ps-remoting-sessions/


Mik*_*ard 20

如果它是一个小文件,您可以将文件的内容和文件名作为参数发送.

$f="the filename"
$c=Get-Content $f
invoke-command -session $s -script {param($filename,$contents) `
     set-content -path $filename -value $contents} -argumentlist $f,$c
Run Code Online (Sandbox Code Playgroud)

如果文件太长而无法满足会话的限制,则可以将文件作为块读取,并使用类似的技术将它们一起附加到目标位置

  • $ filename和$ contents是scriptblock中参数的名称.$ f和$ c是传递给scriptblock的变量. (2认同)