将文件复制到远程计算机
Copy a file to a remote computer
我已经做了两个非常棒的实例; cl1 和 srv1。我正在尝试将文件夹从 cl1 复制到 srv1。我可以使用命令
Enter-PSSession -Credential $cred IP_ADD_SRV1
从 cl1 进入 srv1。我一直在查看 copy-item 的帮助站点,发现这个命令称为 将文件复制到远程计算机 。这是正确的吗?命令是
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "D:\Folder001\test.log" -Destination "C:\Folder001_Copy\" -ToSession $Session
我的问题是:
- ComputerName 就是我在 Microsoft 远程桌面上给它们起的名字吗?
- 我把什么作为凭据?
- 我的问题是我要复制的两个文件夹的路径几乎相同。有人告诉我需要使用 UNC 路径。我需要用这个吗
在复制项目和目的地?我对此很陌生,但是
这看起来适合 UNC 路径:\\cl1\C$\Users\Admin\Test。 ?
您可以通过多种方式将文件或文件夹从电脑复制到远程机器。
- 一个'Normal'副本(不使用会话对象)
如果您登录的电脑名为 cl1
并且文件在该计算机上(来源),您需要以 UNC 格式指定 目标:
Copy-Item -Path 'C:\SourceFolder\TheFileToCopy.txt' -Destination '\srv1\c$\DestinationFolder'
但是,如果文件在远程机器上,并且您需要将该文件 复制到 您登录的机器,那么 Source 应为 UNC 格式:
Copy-Item -Path '\srv1\c$\TheFileToCopy.txt' -Destination 'C:\DestinationFolder'
- 使用会话对象
如果您登录的电脑名为 cl1
并且文件在该电脑上(来源)并且您已经使用 $session = New-PSSession –ComputerName srv1
与远程机器建立了会话,那么您需要将 Path 和 Destination 参数都指定为本地路径:
Copy-Item -Path 'C:\SourceFolder\TheFileToCopy.txt' -Destination 'C:\DestinationFolder' -ToSession $session
Credential 对象包含用于对远程计算机进行身份验证的用户名和(加密的)密码。为此使用 Get-Credential
cmdlet
您似乎想将目录从计算机 Cl1
上的源复制到远程服务器 srv1
上的路径。
从您的评论中,我看到 source 是 C:\Users\Admin\Test
(即您登录的计算机的本地路径,即 Cl1
)并且目的地 将是远程计算机上的 C:\Users\Admin\Backup
。
这就是为什么您需要为目标路径使用 UNC 格式,C:\Users\Admin\Backup
--> \srv1\C$\Users\Admin\Backup
.
使用服务器名称需要正确设置 DNS,因此您也可以使用该服务器的 IP 地址而不是其名称。假设服务器的 IP 地址为 10.212.141.129
,则目标的 UNC 路径将变为 \10.212.141.129\C$\Users\Admin\Backup
.
但是.. 你的目标是所谓的 Administrative Share (C$
),为此你需要有权限。您还针对用户 Admin 的用户文件夹(在 远程 计算机上是用户 Admin,并且与 您的 [=89] 上的管理员不同=] 电脑.
因此,您很可能没有目标文件夹的访问权限。
您可以通过向 Copy-Item cmdlet 添加参数 -Credential $cred
来授予自己权限(当然,如果您知道正确的凭据)。使用
很容易获得这样的凭据对象
$cred = Get-Credential -Message "Please enter Domain Admin credentials"
要Copy-Item
能够将内容复制到某处,您必须确保目标路径存在。
尝试使用相同的 UNC 命名约定在文件资源管理器中导航到该远程路径。
例如,如果路径 \srv1\C$\Users\Admin
存在,但没有文件夹 Backup
,(并且您有权这样做),请从资源管理器中或在 PowerShell 中创建该文件夹:
if (-not (Test-Path -LiteralPath '\srv1\C$\Users\Admin\Backup' -PathType Container)) {
$null = New-Item -Path '\srv1\C$\Users\Admin\Backup' -ItemType Directory
}
接下来,您应该能够使用
将源目录中的所有文件和子文件夹复制到目标位置
Copy-Item -Path 'C:\Users\Admin\Test' -Destination '\srv1\C$\Users\Admin\Backup' -Recurse # -Credential $cred # can go here
# local source on cl1 ^^^^ ^^^^ to remote destination on srv1
当然,您也可以使用我之前描述的 Session 方法。在这种情况下,您应该使用本地路径名 (C:\whatever) 而不要不需要 UNC 路径,因为 $session 对象会为您处理。
它可能是在目标服务器上,有一个驻留在其他地方的共享设置。例如文件夹 X:\Students\Course1\Output
并且该路径已共享为 StudentMaterial$
。
如果可能是这种情况(请咨询您的老师),您可以将目标设置为 \srv1\StudentMaterial$
,而无需一直通过管理共享。
希望这能解释更多
我已经做了两个非常棒的实例; cl1 和 srv1。我正在尝试将文件夹从 cl1 复制到 srv1。我可以使用命令
Enter-PSSession -Credential $cred IP_ADD_SRV1
从 cl1 进入 srv1。我一直在查看 copy-item 的帮助站点,发现这个命令称为 将文件复制到远程计算机 。这是正确的吗?命令是
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "D:\Folder001\test.log" -Destination "C:\Folder001_Copy\" -ToSession $Session
我的问题是:
- ComputerName 就是我在 Microsoft 远程桌面上给它们起的名字吗?
- 我把什么作为凭据?
- 我的问题是我要复制的两个文件夹的路径几乎相同。有人告诉我需要使用 UNC 路径。我需要用这个吗 在复制项目和目的地?我对此很陌生,但是 这看起来适合 UNC 路径:\\cl1\C$\Users\Admin\Test。 ?
您可以通过多种方式将文件或文件夹从电脑复制到远程机器。
- 一个'Normal'副本(不使用会话对象)
如果您登录的电脑名为 cl1
并且文件在该计算机上(来源),您需要以 UNC 格式指定 目标:
Copy-Item -Path 'C:\SourceFolder\TheFileToCopy.txt' -Destination '\srv1\c$\DestinationFolder'
但是,如果文件在远程机器上,并且您需要将该文件 复制到 您登录的机器,那么 Source 应为 UNC 格式:
Copy-Item -Path '\srv1\c$\TheFileToCopy.txt' -Destination 'C:\DestinationFolder'
- 使用会话对象
如果您登录的电脑名为 cl1
并且文件在该电脑上(来源)并且您已经使用 $session = New-PSSession –ComputerName srv1
与远程机器建立了会话,那么您需要将 Path 和 Destination 参数都指定为本地路径:
Copy-Item -Path 'C:\SourceFolder\TheFileToCopy.txt' -Destination 'C:\DestinationFolder' -ToSession $session
Credential 对象包含用于对远程计算机进行身份验证的用户名和(加密的)密码。为此使用 Get-Credential
cmdlet
您似乎想将目录从计算机 Cl1
上的源复制到远程服务器 srv1
上的路径。
从您的评论中,我看到 source 是 C:\Users\Admin\Test
(即您登录的计算机的本地路径,即 Cl1
)并且目的地 将是远程计算机上的 C:\Users\Admin\Backup
。
这就是为什么您需要为目标路径使用 UNC 格式,C:\Users\Admin\Backup
--> \srv1\C$\Users\Admin\Backup
.
使用服务器名称需要正确设置 DNS,因此您也可以使用该服务器的 IP 地址而不是其名称。假设服务器的 IP 地址为 10.212.141.129
,则目标的 UNC 路径将变为 \10.212.141.129\C$\Users\Admin\Backup
.
但是.. 你的目标是所谓的 Administrative Share (C$
),为此你需要有权限。您还针对用户 Admin 的用户文件夹(在 远程 计算机上是用户 Admin,并且与 您的 [=89] 上的管理员不同=] 电脑.
因此,您很可能没有目标文件夹的访问权限。
您可以通过向 Copy-Item cmdlet 添加参数 -Credential $cred
来授予自己权限(当然,如果您知道正确的凭据)。使用
$cred = Get-Credential -Message "Please enter Domain Admin credentials"
要Copy-Item
能够将内容复制到某处,您必须确保目标路径存在。
尝试使用相同的 UNC 命名约定在文件资源管理器中导航到该远程路径。
例如,如果路径 \srv1\C$\Users\Admin
存在,但没有文件夹 Backup
,(并且您有权这样做),请从资源管理器中或在 PowerShell 中创建该文件夹:
if (-not (Test-Path -LiteralPath '\srv1\C$\Users\Admin\Backup' -PathType Container)) {
$null = New-Item -Path '\srv1\C$\Users\Admin\Backup' -ItemType Directory
}
接下来,您应该能够使用
将源目录中的所有文件和子文件夹复制到目标位置Copy-Item -Path 'C:\Users\Admin\Test' -Destination '\srv1\C$\Users\Admin\Backup' -Recurse # -Credential $cred # can go here
# local source on cl1 ^^^^ ^^^^ to remote destination on srv1
当然,您也可以使用我之前描述的 Session 方法。在这种情况下,您应该使用本地路径名 (C:\whatever) 而不要不需要 UNC 路径,因为 $session 对象会为您处理。
它可能是在目标服务器上,有一个驻留在其他地方的共享设置。例如文件夹 X:\Students\Course1\Output
并且该路径已共享为 StudentMaterial$
。
如果可能是这种情况(请咨询您的老师),您可以将目标设置为 \srv1\StudentMaterial$
,而无需一直通过管理共享。
希望这能解释更多