2

Я немного озадачен и ссылался на множество других записей как в SuperUser, так и в StackOverflow по вопросам, аналогичным моим, но пока безрезультатно. Я также читал различные другие сайты и тому подобное с помощью поиска Google. Тем не менее, застрял, однако. Может я просто дремучий :)

В любом случае, у меня есть общая папка под названием "WindowsUpdate" на моем персональном рабочем компьютере, которая доступна всем остальным компьютерам (если администратор) в нашей локальной сети здесь, где я работаю. Эта папка содержит сценарий PowerShell, который автоматизирует мой процесс обновления, который включает в себя поиск обновлений Windows, их загрузку и установку. Я использую модуль Windows PowerShell для выполнения этой задачи. Все отлично работает с точки зрения обновления, за исключением того, что я хотел бы также включить небольшую строку кода, которая копирует модуль обновления Windows PowerShell из моей общей папки в соответствующее место на 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_Trou Troubleshooting.

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

Мои вопросы следующие:

1) Я использую правильный код и синтаксис для выполнения этой задачи?
2) Кажется, существует какая-то проблема безопасности, связанная с доверенным хостом. Какой лучший способ решить эту проблему?

ОБНОВИТЬ

Я продолжал возиться с вещами и выяснил, как сделать мой компьютер надежным хостом на удаленной машине; однако сейчас я получаю это сообщение об ошибке:

[AssistDirOffice] Соединение с удаленным сервером AssistDirOffice завершилось неудачно со следующим сообщением об ошибке: Клиент WinRM не может обработать запрос, поскольку имя сервера не может быть разрешено. Для получения дополнительной информации см. Раздел справки about_Remote_Trou Troubleshooting.

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

Другие заметки, которые могут быть полезны

Я не пытаюсь подключиться к реальному серверу или домену, я просто полагаю, что мой рабочий стол эффективно работает как сервер.

1 ответ1

0

Вот проблема (ы):

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) Вы вызываете Copy-Item на удаленном компьютере (AssistDirOffice), но вы ссылаетесь на пути, как если бы он выполнялся на локальном компьютере.

Попробуйте заменить этот блок просто так:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .