Компьютерный форум 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=329671)

ITdevel 09-09-2017 17:06 2763791

Автоматизированное копирование файлов на парк машин
 
Коллеги, добрый день! Помогите в написание скрипта!!!!))))) Есть парк из 300 ПК, необходимо разлить файлы с эталонного ПК на все доменные ПК под все учетки в системе (или конкретно указанною учетку из списка use.txt) с автоспуском, после копирования на каждый из ПК должна произойти перезагрузка. Если до ПК не достучатся (он Выключен) выполнение скрипта продолжать (с возможность писать лог. на какие машины не скопированы файлы)
в файле pc.txt - все имена ПК: ------------------------------------------------------------------- в файле use.txt - все логины:
PC-1 --------------------------------------------------------------------- user1
PC-b --------------------------------------------------------------------- multik2
PC-27a --------------------------------------------------------------------- polzovatel2

Каждый ПК по порядку соответствует списку пользовательских профилей ( на PC-1 --> user1, PC-b --> multik2, PC-27a --> polzovatel2 и т.д....)

Набросал такой скрипт (в файле pc.txt - все имена ПК, в файле use.txt - все логины (они же профиля в системе) пользователей:

@ECHO ON

set listfile=pc.txt
for /f "tokens=1" %%i in (%listfile%) do call :procedure %%i
:procedure

MD "%1\C$\ProgramData\systems"
copy "\\%computername%\C$\ProgramData\systems\*" "\\%1\c$\ProgramData\systems"

set listfile=use.txt
for /f "tokens=2" %%i in (%listfile%) do call :procedure %%i
:procedure

copy "\\%1\c$\ProgramData\systems\hoster.lnk" "\\%1\C$\Users\%2\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"


pause

Iska 09-09-2017 17:48 2763796

ITdevel, если машины в домене — Вы выбрали наихудший вариант реализации.

ITdevel 09-09-2017 18:13 2763799

Iska, Через групповые политики не вариант, через smb тоже... только как-то так.... через костыль....

Iska 09-09-2017 18:17 2763800

Цитата:

Цитата ITdevel
Iska, Через групповые политики не вариант, »

Отчего же? Какие Вы видите препятствия тут?

Цитата:

Цитата ITdevel
через smb тоже »

Простите, а copy \\Server\Share… — это что тогда?

ITdevel 09-09-2017 18:30 2763802

Цитата:

Цитата Iska
Цитата ITdevel:
Iska, Через групповые политики не вариант, »
Отчего же? Какие Вы видите препятствия тут? »

Доступа к серваку нет.

Цитата:

Цитата Iska
через smb тоже »
Простите, а copy \\Server\Share… — это что тогда? »

Я имел ввиду сетевую шару, а не сам протокол...

Помогите допилить 2-ю часть (как правильнее будет?) ;)

set listfile=use.txt
for /f "tokens=2" %%i in (%listfile%) do call :procedure %%i
:procedure

copy "\\%1\c$\ProgramData\systems\hoster.lnk" "\\%1\C$\Users\Что сюда прописать????\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"

Коллеги, если есть правильные варианты, просьба просветите неуча.. ;)

Iska 09-09-2017 18:56 2763807

ITdevel, единственно правильный вариант я уже озвучил.

Проблема в том, что это может быть не c$, не Users$, и даже не UserName. Единственный вариант таким путём выяснить «где» — получить доступ к удалённому реестру, найти путь к локальному профилю и от этого уже «танцевать». Либо же успользовать PowerShell и его Remote Session — будет чуть проще.


Время: 22:51.

Время: 22:51.
© OSzone.net 2001-