如何使用 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
目前,我运行使用以下命令将文件提取到我的本地系统。
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