Назад | Перейти на главную страницу

Удаленное управление местоположением копирование и установка больших обновлений программного обеспечения в 50 LAN

Первоначально опубликовано в Stack Overflow и было направлено сюда. Я новичок в программировании и пытаюсь написать сценарий PowerShell для управления обновлениями программного обеспечения. Я нахожусь в среде домена Windows с более чем 50 удаленными офисами. В каждом офисе по 4 компьютера. На одном компьютере «Компьютер А» установлен Dropbox, который мы используем для резервного копирования, а теперь и для обновлений программного обеспечения. Я хочу выполнить сценарий со своего локального компьютера, который копирует папку (~ 1 ГБ) на другие компьютеры в этой локальной сети и запускает файл setup.exe в каталоге для обновления программного обеспечения на этих компьютерах.

Насколько я могу судить, чтобы использовать командлет Enter-pssession и запустить процесс копирования и запустить процесс, я должен:

  1. На удаленном компьютере включите WinRM: enable-psremoting -force
  2. На удаленном компьютере включите аутентификацию CredSSP: enable-smancredssp -role server -force
  3. На локальном компьютере включите аутентификацию CredSSP: enable-SmanCredSSP -role client -force

Отсюда я могу войти в сеанс оболочки Power и начать копирование и установку. Вот код, который я запускаю:

#Allow my computer to send credentials to remote computers
Enable-WSManCredSSP -Role Client -DelegateComputer * -Force
$credential = Get-Credential -Credential domain\user 
#Getting Content 
$path = "C:\computernames.csv"
Import-Csv -path $path | 
foreach-object {
    $computername = $_.Name
    if (Test-Connection -cn $_.Name -quiet) {
        #copy the batch file that allows remote powershell access
        $source = "c:\"
        $destination = "\\$computername\c$\install files\remoteaccess"
        robocopy $source $destination
        #open file to allow remote PS access
        & psexec \\$computername -a runas -u domain\user -p password -c -f -h "\\$computername\c$\install files\remoteaccess\remoteaccess.bat"
    #Initiates Power Shell session with remote computer
    Enter-PSSession -cn $_.Name -Credential $credential -Authentication Credssp
    #begin copy
        #be sure to refine destination 
    copy-item -path $_.Source -Destination $_.Destination -force -verbose -recurse | out-file c:\copylog.txt
    #begin silent install
        #code here
    #stop wsmancredssp accep
    disable-wsmancredssp -role server
    #close pssession
    exit-pssession 
    } else {
        "$computername is not online"
    }
}
Disable-wsmancredssp -role client

В computernames.csv есть заголовки: Имя, Источник, Место назначения с каталогами UNC для каждого компьютера в локальной сети с Dropbox и куда копировать файл.
Файл "remoteaccess.bat" содержит следующие две строки кода:

powershell.exe enable-psremoting -force >>c:\remotelog.txt
powershell.exe Enable-WSManCredSSP -role Server -force >>c:\remotelog.txt

Окно PowerShell зависает после запуска сеанса psexec с удаленным компьютером и отправляет первую команду PowerShell для включения удаленного взаимодействия. Ошибка не возникает, или ввод не запрашивается. Вывод этой команды сохраняется в текстовом файле удаленного журнала: «WinRM обновлен для приема запросов. Служба WinRM запущена.

WinRM уже настроен для удаленного управления на этом компьютере ".

Похоже, что команда powershell для включения wsmancredssp никогда не получена. Когда я запускаю командный файл на удаленном компьютере из программного обеспечения удаленного доступа, обе команды выполняются и успешно регистрируются. Где моя команда psexec работает неправильно или как я могу настроить эти компьютеры, чтобы разрешить удаленные сеансы с помощью удаленной команды без использования GPO?

Код отключен несколькими способами:

  1. Если вы находитесь в среде домена Windows, почему бы вам просто не включить удаленное взаимодействие Powershell через GPO?
  2. Enter-PSSession - это команда для интерактивных удаленных сеансов, вам нужны New-PSSession и Invoke-Command с параметром сеанса.
  3. CredSSP требуется только в том случае, если вы хотите получить доступ к удаленным системам из удаленной системы, к которой вы подключены.
  4. Почему вы копируете 1 ГБ данных в филиалы? Связь с главным офисом слишком нестабильная?
  5. команда robocopy копирует все содержимое C: \ в удаленное место назначения, которое вам точно не нужно (pagefile.sys, bootmgr и т. д.).