Copiando um arquivo de uma pasta compartilhada para uma máquina remota usando o PowerShell

2

Estou um pouco perplexo e referenciei várias outras entradas no SuperUser e no StackOverflow relativas a problemas semelhantes aos meus, mas sem resultado até agora. Eu também li vários outros sites e tal através da pesquisa do google. Ainda preso, no entanto. Talvez eu seja apenas densa:)

De qualquer forma, eu tenho uma pasta compartilhada intitulada "WindowsUpdate" no meu computador de trabalho pessoal que está disponível para todos os outros computadores (se um administrador) em nossa LAN aqui onde eu trabalho. Essa pasta inclui um script do PowerShell que automatiza meu processo de atualização, que inclui encontrar atualizações do Windows, baixá-las e instalá-las. Estou usando o Módulo do Windows Update PowerShell para realizar essa tarefa. Tudo funciona bem do ponto de vista da atualização, exceto que eu também gostaria de incluir uma pequena linha de código que copia o PowerShell Windows Update Module da minha pasta compartilhada para o local apropriado no C: \ da máquina remota. Eu fui mal sucedido em minhas inúmeras tentativas até agora. Qualquer ajuda será muito apreciada.

Eu tentei usar o Copy-Item para isso, bem como a minha tentativa mais recente abaixo no meu script.

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 

Aqui está a mensagem de erro que estou recebendo do código acima:

[AssistDirOffice] Connecting to remote server AssistDirOffice failed with the following error message : The WinRM client cannot process the request. If the authentication scheme is different from Kerberos, or if the client computer is not joined to a domain, then HTTPS transport must be used or the destination machine must be added to the TrustedHosts configuration setting. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated. You can get more information about that by running the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic.

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

Minhas perguntas são as seguintes:

1) Estou usando o código e a sintaxe corretos para realizar essa tarefa?
2) Parece haver algum tipo de problema de segurança envolvendo um host confiável. Qual é a melhor maneira de resolver isso?

UPDATE

Eu continuei mexendo nas coisas e descobri como tornar meu computador um host confiável na máquina remota; no entanto, estou recebendo esta mensagem de erro:

[AssistDirOffice] Connecting to remote server AssistDirOffice failed with the following error message : The WinRM client cannot process the request because the server name cannot be resolved. For more information, see the about_Remote_Troubleshooting Help topic.

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

Outras notas que podem ser úteis

Não estou tentando conectar-me a um servidor ou domínio real, apenas ao meu desktop de trabalho, que está atuando efetivamente como um servidor, suponho.

    
por ahelton 08.12.2016 / 00:13

1 resposta

0

Este é o problema (s):

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

1) Se esta for copiada / colada com precisão, então o seu argumento -Destination está na sua própria linha em vez de fazer parte do comando Copy-Item .

2) Você está invocando Copy-Item no computador remoto (AssistDirOffice), mas está fazendo referência aos caminhos como se estivesse sendo executado no computador local.

Tente substituir esse bloco apenas com isto:

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