使用 PowerShell 将文件从共享文件夹复制到远程计算机

使用 PowerShell 将文件从共享文件夹复制到远程计算机

我有点困惑,参考了 SuperUser 和 StackOverflow 上与我类似的问题的多个其他条目,但到目前为止毫无进展。我也通过谷歌搜索阅读了其他各种网站等。但还是卡住了。也许我只是太笨了 :)

无论如何,我的个人工作电脑上有一个名为“WindowsUpdate”的共享文件夹,我工作所在的局域网中的所有其他电脑(如果是管理员)都可以访问该文件夹。此文件夹包含一个 PowerShell 脚本,可自动执行我的更新过程,包括查找 Windows 更新、下载它们然后安装它们。我使用 Windows Update PowerShell 模块来完成此任务。从更新的角度来看,一切都运行正常,但我还想添加一小行代码,将 PowerShell Windows 更新模块从我的共享文件夹复制到远程计算机的 C:\ 上的适当位置。到目前为止,我多次尝试都没有成功。任何帮助都将不胜感激。

我曾尝试将其用于Copy-Item此以及我最近在脚本中的尝试。

Echo ""
Echo "Setting Execution policy to BYPASS"
Set-ExecutionPolicy Bypass -Confirm:$false

Echo ""
Echo "Copying Module PSWindowsUpdate to PowerShell Modules Folder"
Invoke-Command -ComputerName AssistDirOffice -ScriptBlock {Copy-Item -Path  \\ASSISTDIROFFICE\WindowsUpdate\PSWindowsUpdate -Destination C:\Windows\System32\WindowsPowerShell\v1.0\Modules}
Pause

Echo""
Echo "Updating Chocolatey Packages"
#Queries Chocolatey.org database for updates to locally installed packages and updates them if necessary
cup all -y -allowemptychecksums

Echo ""
Echo "Importing Powershell Module PSWindowsUpdate"
#Installs Powershell Update module
Import-Module PSWindowsUpdate
refreshenv

Echo ""
Echo "Querying Microsoft Update Server for Windows Updates"
#Queries Microsoft Windows Update servers for updates and install any new  ones found.
Get-WUList

Echo ""
Echo "Hiding Microsoft Security Essentials and Skype Install and Updates"
Hide-WUUpdate -Title "Microsoft Security Essentials*" -Confrim:$false
Hide-WUUpdate -Title "Skpe*" -Confirm:$false
Hide-WUUpdate -Title "Preview*" -Confirm:$false

Echo ""
Echo "Downloading and Installing Windows Updates"
Get-WUInstall -acceptall 

这是我从上面的代码收到的错误消息:

[AssistDirOffice] 连接到远程服务器 AssistDirOffice 失败,并显示以下错误消息:WinRM 客户端无法处理请求。如果身份验证方案与 Kerberos 不同,或者客户端计算机未加入域,则必须使用 HTTPS 传输或必须将目标计算机添加到 TrustedHosts 配置设置。使用 winrm.cmd 配置 TrustedHosts。请注意,TrustedHosts 列表中的计算机可能未经过身份验证。您可以通过运行以下命令获取有关此问题的更多信息:winrm help config。有关更多信息,请参阅 about_Remote_Troubleshooting 帮助主题。

  • CategoryInfo:OpenError:(AssistDirOffice:String)[],PSRemotingTransportException
  • FullyQualifiedErrorId:ServerNotTrusted、PSSessionStateBroken

我的问题如下:

1) 我是否使用了正确的代码和语法来完成此任务?
2) 似乎存在某种涉及受信任主机的安全问题。解决此问题的最佳方法是什么?

更新

我继续摆弄一些东西,并想出了如何使我的计算机成为远程计算机上的受信任主机;但是,我现在收到此错误消息:

[AssistDirOffice] 连接到远程服务器 AssistDirOffice 失败,并显示以下错误消息:WinRM 客户端无法处理请求,因为无法解析服务器名称。有关更多信息,请参阅 about_Remote_Troubleshooting 帮助主题。

  • CategoryInfo:OpenError:(AssistDirOffice:String)[],PSRemotingTransportException
  • FullyQualifiedErrorId:ComputerNotFound、PSSessionStateBroken

其他可能有用的注意事项

我并没有尝试连接到实际的服务器或域,只是我的工作桌面实际上充当了服务器的角色。

答案1

问题如下:

Invoke-Command -ComputerName AssistDirOffice -ScriptBlock {
  Copy-Item -Path \\ASSISTDIROFFICE\WindowsUpdate\update-automation.ps1 
 -Destination C:\Windows\System32\WindowsPowerShell\v1.0\Modules
 }

1) 如果这是准确地复制/粘贴,那么您的-Destination参数就在它自己的行上,而不是命令的一部分Copy-Item

2) 您正在远程计算机(AssistDirOffice)上调用 Copy-Item,但您引用的路径就像它在本地计算机上运行时一样。

尝试用这个替换那个块:

Copy-Item -Path \\ASSISTDIROFFICE\WindowsUpdate\update-automation.ps1 -Destination C:\Windows\System32\WindowsPowerShell\v1.0\Modules

相关内容