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