Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Poweshell RunspacePool — Многопоток

Ответить
Настройки темы
PowerShell - [решено] Poweshell RunspacePool — Многопоток

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день. Написал код, но не работает с RunspacePool.

$button_OK.Add_Click({

$RunspacePool = [runspacefactory]::CreateRunspacePool(1,8)
$RunspacePool.ApartmentState = "MTA"
$RunspacePool.Open()
$Work = [powershell]::Create().AddScript($scriptblock)
$scriptblock = {
if ($CheckBox_ESPP.Checked){
& C:\PSTools\psexec.exe -h -nobanner -accepteula @C:\comps.txt powershell.exe -inputformat none "Invoke-Expression -Command 'hostname'; Get-Item C:\EASOPS\ESPP\In; Get-Item C:\EASOPS\ESPP\Out"
}
if ($CheckBox_GMMQ.Checked){
& C:\PSTools\psexec.exe -h -nobanner -accepteula @C:\comps.txt powershell.exe -inputformat none "Invoke-Expression -Command 'hostname'; Get-Item C:\GMMQ\Export; Get-Item C:\GMMQ\Import"
}
if ($CheckBox_Size.Checked){
& C:\PSTools\psexec.exe -h -nobanner -accepteula @C:\comps.txt powershell.exe -inputformat none "Invoke-Expression -Command 'hostname'; Get-PSDrive C"
}
}

$Work.RunspacePool = $RunspacePool
$Work.BeginInvoke()

$RunspacePool.Close() | Out-Null
$RunspacePool.Dispose() | Out-Null
})

Подскажите, пожалуйста, что я сделал не так?

Отправлено: 16:24, 03-06-2021

 

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Столько просмотров, ни кто не знает?

Отправлено: 09:00, 11-06-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1235
Благодарности: 518

Профиль | Отправить PM | Цитировать


Цитата rulesss2:
ни кто не знает? »
Сформулируйте задачу, а не вопрос "почему не работает", тогда, возможно, что-то подскажут.
И код обрамляйте специальными тегами...

-------
scio me nihil scire. Ѫ


Отправлено: 09:11, 11-06-2021 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Зачем с пауэршеллом использовать psexec? У него есть свои механизмы удалённого запуска.

https://docs.microsoft.com/ru-ru/pow...powershell-7.1

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 09:21, 11-06-2021 | #4


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Суть в том, что psexec выполняет код на 51 компьютере по очереди. Через RunspacePool я пытаюсь создать выполнение кода хотя бы на 8 компьютерах одновременно.

Цитата rulesss2:
Зачем с пауэршеллом использовать psexec? У него есть свои механизмы удалённого запуска. »
Enter-PSSession Не работает. Блокирует антивирус. Возможности управлять им нет, по этому пришлось использовать psexec.

Отправлено: 09:48, 11-06-2021 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Цитата rulesss2:
Возможности управлять им нет »
Договориться с теми, кто им управляет?

Invoke-command запускает сразу 32 сессии.

Цитата rulesss2:
Enter-PSSession Не работает »
Если через psexec на удалённой машине выполнить
Код: Выделить весь код
winrm -qc

или

powershell -command "Enable-PSRemoting -Force"
, тоже нет?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 11-06-2021 в 11:47.


Отправлено: 11:31, 11-06-2021 | #6


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Все варианты пробовал. Договориться не вариант. Этот код пробовал "Служба WinRM уже настроена на прием запросов на компьютере."

Enter-PSSession : Сбой подключения к удаленному серверу xxxx. Сообщение об ошибке: Клиенту не удается подключит
ься к узлу назначения, указанному в запросе. Убедитесь, что служба на узле назначения работает и принимает запросы. Озн
акомьтесь с журналами и документацией для определения запущенной на узле назначения службы WS-Management (чаще всего эт
о IIS или WinRM). Если это служба WinRM, то для анализа состояния и настройки этой службы используйте на удаленном узле
команду "winrm quickconfig". Подробности см. в разделе справки "about_Remote_Troubleshooting".
строка:1 знак:1
+ Enter-PSSession xxxx
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (xxxx:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed

Ошибка при попытки подключения.

Отправлено: 13:07, 11-06-2021 | #7


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


rulesss2, Посмотрите в сторону workflow, который позволяет выполнять код параллельно. Или ставьте PowerShell Core, где у Foreach-Object есть -Parallel и -ThrottleLimit.

То, что вам не позволяет антивирус, это конечно сильно. Он скорее должен ругаться на psexec.

Отправлено: 13:22, 11-06-2021 | #8


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


С workflow беда. Не получается добавить в код который написал в первом посте. Если кто-то поможет, буду очень благодарен. На psexec антивирус не ругается. Команды выполняются, просто хочу ускорить процесс выполнения.

Отправлено: 13:42, 11-06-2021 | #9


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Цитата rulesss2:
Не получается добавить в код который написал в первом посте. »
Откажитесь от него, перепишите с использованием workflows.

Просто сравните время выполнения:
Код: Выделить весь код
$list = 'ya.ru','google.com','yahoo.com'

workflow Test-Ping
{
param ([string[]] $list)

    foreach -parallel ($l in $list)
    {
        Test-Connection $l -count 2
    }
}

Test-Ping $list

Последний раз редактировалось Foreigner, 11-06-2021 в 15:39.


Отправлено: 13:51, 11-06-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Poweshell RunspacePool — Многопоток

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено




 
Переход