Я пытаюсь выполнить командный файл в списке 48 компьютеров. Я не хочу выполняться и ожидать завершения последовательно, потому что каждый cmd занимает приблизительно 10 минут для завершения. WinRM не является опцией. Ни один не WMI. PSExec является опцией...., но я, может казаться, не заставляю его работать в Начинать-задании.
Я делаю что-то как:
$sb = {
param
(
$computer = "serverw01",
$userid = "domain2\serviceid",
$password = 'servicepw',
$command = "cd /d d:\ && updateAll.cmd"
)
d:\eps\pstools\PsExec.exe -u $userid -p $password "\\$($computer)" cmd /c $command
}
foreach ($computer in Get-Content "D:\Data\serverlist.txt") {
Start-Job $sb -ArgumentList $computer
}
Это создает набор заданий...., но никогда завершенный и если я Получать-задание на каком-либо из них я возвращаюсь
PS> get-job | receive-job -Keep
+ CategoryInfo : NotSpecified: (:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
это выполняется очень хорошо, если я выполняю функцию как:
& $sb -computer "serverw01"
Скрипт инициирования запущен в Powershell v2.0 на поле Server 2008r2, я попробовал его на поле в domain2, в то время как зарегистрированный с идентификатором пользователя администратора домена (тот же результат).
попробуйте параметр -accepteula для psexec например
d:\eps\pstools\PsExec.exe -accepteula -u $userid -p $password