如何使用 PowerShell 将远程服务器上的文件移动到同一远程服务器上的另一个位置

How to move file on remote server to another location on the same remote server using PowerShell

目前,我运行使用以下命令将文件提取到我的本地系统。

Get-SCPFile 
  -ComputerName $server 
  -Credential $credential
  -RemoteFile ($origin + $target + ".csv") 
  -LocalFile ($destination + $target + ".csv")

它按照我的意愿工作(尽管我不能通过正则表达式 and/or 通配符复制多个文件很糟糕)。但是,在执行操作后,我想将远程文件移动到远程服务器上的另一个目录,而不是驻留在 $server$origin 中,我希望将它们放在$origin + "/done" 在同一台服务器上。今天,我必须为此使用 PuTTY,但从 PS.

开始会方便得多

谷歌搜索给了我很多 material 但我无法让它发挥作用。目前,我不确定我是否以某种方式错误地指定了路径,或者在针对外部安全 Unix 服务器工作时是否无法使用普通命令。

对于复制文件,我不能使用Copy-Item,因此函数Get-SCPFile。我可以想象出于同样的原因(无论是什么原因),远程移动、重命名和列出项目都是不可能的。

This example as well as this one 产生错误 找不到路径 尽管该值被用于通过顶部的脚本成功复制文件。我很确定这是一个误导性的错误信息(虽然不是很确定)。

$file = "\" + $server + "" + $origin  + "" + $target + ".csv"
# \L234231.vds.afm.se/var/trans/ut/drish/sxx/meta001.csv
Remove-Item $file -force

许多答案(如this)都非常简单,这支持了我的理论,即 Unix 和安全的结合会带来额外的挑战。可能是我问题措辞不够好。

还有更高级的 examples,仍然没有用,只是挂断了 window,没有任何错误信息。我觉得我的能力使我无法估计这种方法的错误程度。

在 PowerShell 中,您可以在另一个系统上从您的系统远程创建一个 PowerShell 会话 (PSSession)(并进入您系统上的另一个会话,但那是详细信息...)并在那里执行您的命令。

您可以使用 New-PSSession 创建 PSSession,但是很多 cmdlet 都有一个-ComputerName 参数(或类似的东西),因此它们可以在不首先创建 PSSession 的情况下远程执行。

PSSession 可以与 Enter-PSSession 一起使用以获得交互式会话,或与 Invoke-Command 一起使用来执行 ScriptBlock。这样你就可以直接在目标服务器上测试你的 Remove-Item 命令。根据设置,您可能需要在远程会话中使用 Linux 语法。

这里有更多信息about_PSSessions and using it with SSH to connect to Linux