所以我目前正在我们的 Staging 服务器上工作,它具有我确实拥有的管理员权限。因此,我尝试了 Invoke-Command cmdlet 和 Enter-PSSession cmdlet,尽管这些仍然可以提供帮助,但我的主要问题是我无法让我的远程服务器(staging 服务器)连接到我的本地计算机并获取一些文件。这就像我通常所做的相反的过程,即将文件从本地计算机推送到远程服务器,只是通常不是具有管理员权限的服务器。但由于我一直在使用 Invoke 和 Enter-PSSession,所以就像我在技术上使用 PowerShell 远程连接到该服务器一样,因此如果可能的话,我希望 Staging 服务器能够从我的本地计算机中获取文件。需要说明的是,我已经在此服务器上使用了另一个脚本,所以我确信这只是我目前缺乏经验。下面是我正在使用的脚本。
Enter-PSSession -ComputerName StagingServer -Credential AdminUser
### Location of starting directory ###
$_SourcePath = "\\LocalMachine\C$\Deployment\Files"
### Location where files will be copied to ###
$_DestinationPath = "C:\Staging\DeployHere"
Get-ChildItem -recurse ($_SourcePath) | Copy-Item -Destination ($_DestinationPath) -PassThru
还使用过:
# Set Up Credentials. PSCredentials is an object that stores your username and an encrypted version of your password.
$password = ConvertTo-SecureString -String $env:Password -AsPlainText -Force
$cred = New-Object System.Managment.Automation.PSCredential $env:Username,$password
Invoke-Command -ComputerName StagingServer -credential $cred -ScriptBlock {
### Location of starting directly ###
$_SourcePath = "\\LocalMachine\C$\Deployment\Files"
### Location where files will be copied to ###
$_DestinationPath = "C:\Staging\DeployHere"
Copy-Item ($_SourcePath) -Destination ($_DestinationPath)
}
抱歉发了这么长的帖子。再说一遍,我可能只是漏掉了一个步骤,或者完全搞砸了。非常感谢您的帮助。
答案1
将远程文件从本地机器复制到本地机器的稍微简单一点的方法:
net use \\10.11.12.13\RemoteFolder /user:pc\user myPassword
robocopy \\10.11.12.13\RemoteFolder C:\LocalFolder /Copy /E /R:0 /W:0
标志:
/复制 - 复制
/E—复制子文件夹,包括空子文件夹。
更多旗帜在这里:https://ss64.com/nt/robocopy.html
R:0 - 失败复制的重试次数 - 默认值为 100 万次。W:0 - 重试之间的等待时间 - 默认值为 30 秒。
答案2
您可以创建 PSSession 并将其存储在变量中,而不必输入它。
$StagingSession = New-PSSession -ComputerName StagingServer -Credential AdminUser
然后,您可以使用Copy-Item
参数-ToSession
(或-FromSession
)在本地计算机和该会话之间复制项目:
$SourcePath = "C:\Deployment\Files"
$DestinationPath = "C:\Staging\DeployHere"
Copy-Item -Path "$SourcePath\*" -Destination $DestinationPath -Recurse -ToSession $_StagingSession