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

Компьютерный форум 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 | Цитировать


Цитата Foreigner:
Откажитесь от него, перепишите с использованием workflows. »
Код: Выделить весь код
$computer = Get-Content -Path C:\comps.txt 

workflow test { 
  param ([string[]]$computers)
  foreach -parallel ($computer in $computers) {
  InlineScript { C:\PSTools\psexec.exe  $computer powershell.exe -inputformat none -command "Invoke-Expression -Command 'hostname'; Get-Item C:\EASOPS\ESPP\In;  Get-Item C:\EASOPS\ESPP\Out" 
    }
  }
}
Написал так, но ничего не происходит. Подскажите, пожалуйста.

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



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

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


Ветеран


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

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


Цитата rulesss2:
Написал так, но ничего не происходит. Подскажите, пожалуйста. »
1. Я не могу проверить, у меня нет ни psexec.exe, ни других компьютеров
2. В workflow в InlineScript {} необходимо использовать $using ($using:computer) переменную. Попробуйте.
3. Попробуйте без InlineScript {}, прямо в foreach () {}.
4. workflow test необходимо вызвать:

Код: Выделить весь код
$computers = Get-Content -Path C:\comps.txt

workflow test {
param ([string[]]$computers)
....
}

test $computers
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:13, 15-06-2021 | #12



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

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




 
Переход