гугление ответа не даёт, а сам что-то склерожу совершенно жестоко.
Если привязаться к конкретно скрипту, то сейчас рисую такое - (даётся лист машин с проблемами всуса, на них останавливается служба винапдейта и в зависимости от версии выни тихо и с последующим принудительным рестартом устанавливается обновление клиента винапдейта для вин 8 или 7. )
Код:
Код: Выделить всё
set DomainUserUPN=(мойдомен)\(админскийакк)
set /P DomainUserPassword=password...
set FLOG=%~n0.log
set FLIST=ADlist.txt
set w7up=Windows6.1-KB3172605-x86(WU_update).msu
set w8up=Windows8.1-KB3172614-x86(WU_update).msu
if exist %FLOG% set FLIST=%FLOG%
for /f "tokens=*" %%i in (%FLIST%) do call :updWU %%i
goto RETURN
:updWU
for %%k in ( bits,wuauserv,appidsvc,cryptsvc ) do ( psexec \\%1 -u %DomainUserUPN% - p %DomainUserPassword% net stop %%k )для локальной машины это было бы в одну строку (только неясно, отделять ли команду со свитчами чем-то
Код:
Код: Выделить всё
if /f "skip=4 delims=" %%G in ('systeminfo | findstr /B /C:"OS Name" /C:"OS Version"') EQU 7 start %w7up% /quiet /forcerestart else start %w8up% /quiet /forcerestartили вроде того, а для удаленной - вероятно, что--то вроде
Код:
Код: Выделить всё
if /f "skip=4 delims=" %%G in ('psinfo \\%1 -u %DomainUserUPN% - p %DomainUserPassword% kernel') EQU 7 start %w7up% /quiet /forcerestart else start %w8up% /quiet /forcerestartи переменная должна уже тоже включать psexec с параметрами...
Можно, конечно, выделить в goto, но неужели нет изящного в одну строку решения?
это не единственная проблема, вопросы к синтаксису будут регулярно, наверно, возникать))
