Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   запрос в реестр удаленной машины, и выполнение действия по условию (http://forum.oszone.net/showthread.php?t=333354)

bredych 22-02-2018 16:01 2799655

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

имеем список машин, подключаемся к каждой последовательно, имя компа обозначается переменной %%i
Далее собсно запрашиваем список юзеров на машине, чтоб найти меня
for /f %%a in ('reg query \%%i\hku') do (
reg query "\%%i\%%a\Volatile Environment"
и если находящийся в этой ветке ключ username =myname,
то выполнить действие. Допустим, сменить дефолтную раскладку на англ для этого юзера.

собсно вопрос, как?

Казбек 22-02-2018 18:10 2799670

Код:

REG QUERY "\%%i\%%a\Volatile Environment" /v Username  |find "Myname" >nul
if not errorlevel 1 echo выполнить действие

echo выполнить действие - замените на желаемое действие

bredych 26-02-2018 15:10 2800281

спасибо
Строку цикла for при таком разделителе уже не надо? Я что-то синтаксис не понял.

да, а почему переменную не подменяет именем машины?

В батнике
Код:

reg add "\%%i\HKEY_USERS\.DEFAULT\Keyboard Layout\Preload" /V 1 /T REG_SZ /F /D 00000409
В логе -
Код:

D:\Bats>reg add "\%i\HKEY_USERS\.DEFAULT\Keyboard Layout\Preload" /V 1 /T REG_SZ /F /D 00000409
ERROR: Invalid key name.
Type "REG ADD /?" for usage.

хотя в строке выше имя машины прекрасно ресолвится, и между этими строками нет отмены переменной
net use \\%1 /d
- оно ниже.

и в строке как вы описали, лог даёт -
Код:

D:\Bats>for /F %a in ('reg query \%i\hku') do (
REG QUERY "\%i\%a\Volatile Environment" /v Username    | find "myname"  1>nul

 if not errorlevel 1 reg add "\%i\%a\Keyboard Layout\Preload" /V 1 /T REG_SZ /F /D 00000409
)
ERROR: Invalid key name.
Type "REG QUERY /?" for usage.


bredych 28-02-2018 14:31 2800738

а не может-ли тут влиять как-то недоступность разделов кроме HKCU & HKLM на удаленной машине?

Казбек 01-03-2018 09:53 2800878

Попробуйте такой тестовый вариант с переменной:
Код:

@echo off
set file=c:\regcomplist.txt
for /f "Tokens=*" %%g in (%file%) do (
echo %%g>> c:\regquery.txt
reg query "\\%%g\HKU\Volatile Environment">> c:\regquery.txt
echo.>> c:\regquery.txt
echo.>> c:\regquery.txt
)

c:\regcomplist.txt - писок ваших ПК
Как отрабатывает??

Так же добавьте еще один слэш перед переменной и проверяйте:
Код:

REG QUERY "\\%%i\%%a\Volatile Environment" /v Username  |find "Myname" >nul

bredych 01-03-2018 17:55 2800979

Цитата:

Цитата Казбек
c:\regcomplist.txt - писок ваших ПК
Как отрабатывает?? »

у нас в принципе по паролю доступ даёт, но аналогичный код выдаёт

%i


%i

Цитата:

Цитата Казбек
добавьте еще один слэш перед переменной и проверяйте: »

Код:

D:\Bats>reg add "\\%i\HKU\.DEFAULT\Keyboard Layout\Preload" /V 1 /T REG_SZ
 /D 00000409 /F
ERROR: The network path was not found.

D:\Bats>pause
Press any key to continue . . .

D:\Bats>for /F %a in ('reg query \\%i\hku') do (
REG QUERY "\\%i\%a\Volatile Environment" /v Username    | find "myname"  1>nul

 if not errorlevel 1 reg add "\\%i\%a\Keyboard Layout\Preload" /V 1 /T REG_SZ /D
 00000409 /F
)
ERROR: The network path was not found.
...

D:\Bats>for /F %a in ('reg query \\%i\hku') do (
REG QUERY "\\%i\%a\Volatile Environment" /v Username    | find "myname"  1>nul

 if not errorlevel 1 reg add "\\%i\%a\Keyboard Layout\Preload" /V 1 /T REG_SZ /D
 00000409 /F
)
ERROR: The network path was not found.

D:\bats\Bats>pause
Press any key to continue . . .

D:\bats\Bats>QUERY "\\%i\%a\Volatile Environment" /v Username    | find "myname
"  1>nul
Invalid parameter(s)
QUERY { PROCESS | SESSION | TERMSERVER | USER }

апд

Скрытый текст

Код:

@echo ON

set DomainUser=kontora\myuser
set /P DomainPassword=password...
set FILELOG=%~n0.log
set PCLIST=AD3.txt
if exist %FILELOG% set PCLIST=%FILELOG%
for /f "tokens=*" %%i in (%FILELIST%) do call :ENGLISH %%i
goto RETURN


:ENGLISH

rem echo %%i>> D:\bats\regquery.txt
rem reg query "\\%%i\HKU\Volatile Environment">> D:\bats\regquery.txt
rem echo.>> D:\bats\regquery.txt
rem echo.>> D:\bats\regquery.txt


reg add "\\%%i\HKU\.DEFAULT\Keyboard Layout\Preload" /V 1 /T REG_SZ  /D 00000409 /F
pause
for /f %%a in ('reg query \\%%i\hku') do ( REG QUERY "\\%%i\%%a\Volatile Environment" /v Username  |find "myuser" >nul
if not errorlevel 1 reg add "\\%%i\%%a\Keyboard Layout\Preload" /V 1 /T REG_SZ /D 00000409 /F
)
pause


:return

ERROR: The network path was not found.
на каждую из 2х строку запросов


Время: 11:47.

Время: 11:47.
© OSzone.net 2001-