gpt4 book ai didi

Powershell - Invoke-Command 脚本 block 中的 "Copy-item"命令

转载 作者:行者123 更新时间:2023-12-02 22:48:06 25 4
gpt4 key购买 nike

我需要使用 powershell 脚本将文件从一台远程服务器复制到另一台服务器。
我尝试过的:-
当我使用以下 powershell 命令时,它工作正常。(意味着文件从一台服务器复制到另一台服务器)
enter image description here
但是当我使用以下脚本时,它会给出错误“找不到路径...”,如下所示
enter image description here
实际上,文件存在于该路径中。
我试图引用以下堆栈溢出已经问答

  • Error with PowerShell command for copying file to remote server with credential
  • 'Session' Parameter is null or empty in PowerShell script
  • powershell remote
  • Invoke-Command with remote session: Cannot validate argument on parameter
  • Unable to copy a binary to a remote Azure VM
  • PowerShell Command to Copy File on Remote Machine

  • 我也尝试使用
     Get-Help Invoke-Command
    问题:-
  • 如何在 script(2) 中的“Invoke-Command(Scriptblock)”中使用“Copy-Item”命令来复制文件?
  • 有没有更好的方法来实现这一目标(意味着最佳实践)?
  • 最佳答案

    Invoke-Command有参数 -ArgumentList可用于在远程 session 中提供局部变量的值。问题是:它只是变量的值。无文件!
    您可以做什么:
    使用 Get-Content -Raw在小文件上将常量保存在变量中。在目标系统上创建一个 New-Item-Value那个文件。然而那不是很有效。
    例子:

    $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。所以你可以使用 Invoke-Command使用相同的 PSSession。首先创建一个PSSession。使用 Invoke-Command创建您的目录。然后使用 Copy-Item将您的文件移动到正确的位置。最后你可以使用 Invoke-Command做一些整理步骤。并且不要忘记 Remove-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

    关于Powershell - Invoke-Command 脚本 block 中的 "Copy-item"命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63706582/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com