Powershell-”的;“复制项目”;Invoke命令的scriptblock中的命令
我需要使用powershell脚本将文件从一个远程服务器复制到另一个远程服务器 我尝试过的:- 虽然我使用了下面的powershell命令,但工作正常。(表示文件从一台服务器复制到另一台服务器) 但当我使用下面的脚本时,它给出了错误“找不到路径…”,如下所示 实际上,该路径上存在文件 我已经尝试参考以下堆栈溢出问题的答案Powershell-”的;“复制项目”;Invoke命令的scriptblock中的命令,powershell,file-copying,Powershell,File Copying,我需要使用powershell脚本将文件从一个远程服务器复制到另一个远程服务器 我尝试过的:- 虽然我使用了下面的powershell命令,但工作正常。(表示文件从一台服务器复制到另一台服务器) 但当我使用下面的脚本时,它给出了错误“找不到路径…”,如下所示 实际上,该路径上存在文件 我已经尝试参考以下堆栈溢出问题的答案 我还尝试使用 Get-Help Invoke-Command 问题:- 如何在脚本(2)中的“调用命令(脚本块)”中使用“复制项”命令来复制文件 有没有
Get-Help Invoke-Command
问题:-
Invoke命令
具有参数-ArgumentList
,该参数可用于在远程会话中提供本地变量的值。问题是:它只是变量的值。没有文件
你能做什么:在小文件上使用
Get Content-Raw
将contant保存在变量中。在目标系统上,使用该文件的-值创建一个新项目
。然而,这不是很有效
例如:
$txt = Get-Content -Raw -Path "C:\test\oldFile.txt"
$Session = New-PSSession 127.0.0.1
Invoke-Command -Session $Session -ScriptBlock { Param($Txt) New-Item -Path c:\test\newFile.txt -Value $txt } -ArgumentList $txt
#Get-PSSession | Remove-PSSession
结果:
Verzeichnis: C:\test # Sry german OS
Mode LastWriteTime Length Name PSComputerName
---- ------------- ------ ---- --------------
-a---- 03.09.2020 12:23 658033 newFile.txt 127.0.0.1
你应该做什么:
我认为使用Copy Item-ToSession$Session
是正确的方法。它只是为你的目的而做的。缺点是,目标目录需要存在。但无论如何,这两个cmdlet都需要PSSession。因此,您可以在相同的PSSession中使用Invoke命令
。首先创建一个PSSession。使用Invoke命令
创建目录。然后使用Copy Item
将文件移动到正确的位置。最后,您可以使用Invoke命令
完成一些完成步骤。完成以下操作后,不要忘记删除PSSession
:
$DestinationPath = "C:\test"
Invoke-Command -Session $Session -ScriptBlock { Param($Destination) New-Item -Path $Destination -ItemType Directory } -ArgumentList $DestinationPath
Copy-Item -Path "C:\test\oldFile.txt" -ToSession $Session -Destination "c:\test\newFile.txt"
Invoke-Command -Session $Session -ScriptBlock { write-host "Do some stuff" }
$Session | Remove-PSSession
C:\windows.txt仅在调用计算机上存在??如果您的命令成功,您只需在远程计算机上将windows.txt从C:\复制到C:\即可host@Dough莫勒:是的。为了现在的测试目的,我刚刚将windows.txt保存在一台机器(源)的C:\drive,一旦命令成功,文件将复制到另一台机器(目标)C:\drive。