Автор Тема: скрипт powershell (копирование файлов по сети с уведомлением)  (Прочитано 31994 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Fray

  • Администратор
  • Олдфаг
  • *****
  • Сообщений: 6668
  • Рейтинг: 58
  • Пол: Мужской
    • Просмотр профиля
    • IT-Бложек
  • Откуда: Петербург
скрипт powershell работа в сети
« Ответ #15 : 28 сентября 2011, 12:55:30 »
Opium, сделай учетку user1 локальным админом на машине, где будет выполнятся задача.
MCSE: Messaging, MCSE: Communication, MCSE: Productivity, MCSA: Office 365, MCPS
my blog - http://it-blojek.ru

Оффлайн Xiatsu

  • Постоялец
  • ***
  • Сообщений: 116
  • Рейтинг: 0
    • Просмотр профиля
скрипт powershell работа в сети
« Ответ #16 : 28 сентября 2011, 13:04:14 »
Opium, ну так заведи на машине пети учетку user1 и сделай из под нее шедулер
пс. а через управление компом нельзя подключиться к компу васи и завести новую учетку или прав админа на комп васи нет?

апд. не успел за фрэем :(

Оффлайн Opium

  • Старожил
  • ****
  • Сообщений: 507
  • Рейтинг: 19
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Мск
скрипт powershell работа в сети
« Ответ #17 : 28 сентября 2011, 13:31:54 »
Opium, сделай учетку user1 локальным админом на машине, где будет выполнятся задача.

всё. сделал по протоколу
добавил учётке возможность входа в  качестве пакетного задания.
осталось изучить синтаксис на тему сохранения структуры каталогов, потому что код вида
copy-item \\srvtest\Производство\Заделы\*\* -destination \\srvname\1\2\'три три'\производство -force 

собирает все файлы из папки Заделы и сливает в кучу в папку производство, если убрать звёздочки, то будет копироваться только структура каталогов

Оффлайн Opium

  • Старожил
  • ****
  • Сообщений: 507
  • Рейтинг: 19
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Мск
скрипт powershell работа в сети
« Ответ #18 : 28 сентября 2011, 13:34:40 »
Xiatsu, не, подключиться не получится=\

Оффлайн Fray

  • Администратор
  • Олдфаг
  • *****
  • Сообщений: 6668
  • Рейтинг: 58
  • Пол: Мужской
    • Просмотр профиля
    • IT-Бложек
  • Откуда: Петербург
скрипт powershell работа в сети
« Ответ #19 : 28 сентября 2011, 13:42:56 »
Opium, юзай xcopy
MCSE: Messaging, MCSE: Communication, MCSE: Productivity, MCSA: Office 365, MCPS
my blog - http://it-blojek.ru

Оффлайн risc

  • Старожил
  • ****
  • Сообщений: 848
  • Рейтинг: 7
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: раша
скрипт powershell работа в сети
« Ответ #20 : 28 сентября 2011, 13:48:40 »
Opium, а почему не воспользоваться первым моим постом?
Opium, а почему именно на пошике, батник не подойдет в шедулер?
XCOPY "\\srvtest\СКЛАД\*.xls" "\\srvname\1\2\'Склад (300)'\*.*" /e /y /h /c
да и
Opium, юзай xcopy
;)
Кто понял жизнь, тот не торопится...

Оффлайн Opium

  • Старожил
  • ****
  • Сообщений: 507
  • Рейтинг: 19
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Мск
скрипт powershell работа в сети
« Ответ #21 : 28 сентября 2011, 13:52:37 »
risc, Fray, есть у меня сильное подозрение что скрипт будет усложняться, пока не знаю в какую сторону правда=)
да и личный интерес тут есть - изучать повершелл на практике мне проще, чем по учебнику

Оффлайн Fray

  • Администратор
  • Олдфаг
  • *****
  • Сообщений: 6668
  • Рейтинг: 58
  • Пол: Мужской
    • Просмотр профиля
    • IT-Бложек
  • Откуда: Петербург
скрипт powershell работа в сети
« Ответ #22 : 28 сентября 2011, 13:53:15 »
Opium, ну и пусть усложняется... В чем проблема-то??
MCSE: Messaging, MCSE: Communication, MCSE: Productivity, MCSA: Office 365, MCPS
my blog - http://it-blojek.ru

Оффлайн Opium

  • Старожил
  • ****
  • Сообщений: 507
  • Рейтинг: 19
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Мск
скрипт powershell работа в сети
« Ответ #23 : 28 сентября 2011, 13:58:27 »
Fray, если добавится функция обработки данных, то не уверен что батник спасёт

Оффлайн risc

  • Старожил
  • ****
  • Сообщений: 848
  • Рейтинг: 7
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: раша
скрипт powershell работа в сети
« Ответ #24 : 28 сентября 2011, 14:02:10 »
Fray, ну хочет Opium, на пошике пусть пишет
Opium, что нужно сделать?
Кто понял жизнь, тот не торопится...

Оффлайн Opium

  • Старожил
  • ****
  • Сообщений: 507
  • Рейтинг: 19
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Мск
скрипт powershell работа в сети
« Ответ #25 : 28 сентября 2011, 14:20:22 »
risc, =))

пока только копирование
единственный затык в то что команда
copy-item \\srvtest\Производство\Заделы\*\* -destination \\srvname\1\2\'три три'\производство -force  
выбирает все файлы в папке заделы и дочерних папках и сваливает в одну кучу

команда
copy-item \\srvtest\Производство\Заделы\* -destination \\srvname\1\2\'три три'\производство -force  
копирует толкьо структуру каталогов, без файлов

команда
copy-item \\srvtest\Производство\Заделы -destination \\srvname\1\2\'три три'\производство -force  
копирует только одну папку без файлов после чего затыкается.


UPD:

нашёл=)
copy-item \\srvtest\Производство\Заделы\ -destination \\srvname\1\2\'три три'\производство -force -recurse  

Оффлайн Fray

  • Администратор
  • Олдфаг
  • *****
  • Сообщений: 6668
  • Рейтинг: 58
  • Пол: Мужской
    • Просмотр профиля
    • IT-Бложек
  • Откуда: Петербург
MCSE: Messaging, MCSE: Communication, MCSE: Productivity, MCSA: Office 365, MCPS
my blog - http://it-blojek.ru

Оффлайн Opium

  • Старожил
  • ****
  • Сообщений: 507
  • Рейтинг: 19
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Мск
скрипт powershell работа в сети
« Ответ #27 : 03 октября 2011, 14:45:21 »
продолжаем развлекаться.
требуется усложнить скрипт таким образом чтоб он проверял копируемые файлы поимённо (содержимое не интересует пока), сравнивая со списком и при несовпадении ругался матом например мылом.

щас это выглядит так

#бекап данных
copy-item \\server\base\'База 2011'\статистика\Склад\'склад 1' -destination \\server\base\'База 2011'\'статистика'\backup\склад -force -recurse
copy-item \\srv400\base\'База 2011'\статистика\производство -destination \\server\base\'База 2011'\'статистика'\backup\производство -force -recurse

#копирование информации на сервер

###склад ОАО
copy-item \\wgserv1\СКЛАД\'*'.xls -destination \\server\base\'База 2011'\статистика\Склад\'склад 1' -force

###склад НТЦ
copy-item \\wgserv1\СКЛАД\'СКЛАД НТЦ' -destination \\server\base\'База 2011'\статистика\Склад\'склад 1' -force -recurse

###производство
copy-item \\wgserv1\Производство\Заделы\Выполненные -destination \\srv400\base\'База 2011'\статистика\производство -force -recurse
copy-item \\wgserv1\Производство\Заделы\'Заделы 2009г и до' -destination \\srv400\base\'База 2011'\статистика\производство -force -recurse
copy-item \\wgserv1\Производство\Заделы\'Заделы 2010г' -destination \\srv400\base\'База 2011'\статистика\производство -force -recurse
copy-item \\wgserv1\Производство\Заделы\'Заделы 2011г' -destination \\srv400\base\'База 2011'\статистика\производство -force -recurse

отправка мыла будет выглядеть как-то так
$emailFrom = "server@test.ru"
$emailTo = "odmin@test.ru"
$subject = "test"
$body = "ВАРНИНГ!!! ВСЁ УПАЛО, СКЛАД ОПЯТЬ КОСЯЧИТ"
$smtpServer = "192.168.10.100"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)

PS: советы, куски кода и отсылки к толковым мануалам приветствуются
« Последнее редактирование: 03 октября 2011, 14:59:40 от Opium »

Оффлайн shs

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 4401
  • Рейтинг: 89
    • Просмотр профиля
    • ShS's blog
  • Откуда: Default city
скрипт powershell работа в сети
« Ответ #28 : 03 октября 2011, 15:32:05 »
отправка мыла будет выглядеть как-то так
Начиная с PoSh v 2.0 имеет место быть специальнообучченный командлет Send-MailMessage


Оффлайн Opium

  • Старожил
  • ****
  • Сообщений: 507
  • Рейтинг: 19
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Мск
скрипт powershell работа в сети
« Ответ #29 : 04 октября 2011, 18:44:21 »
shs, за командлет спасибо=)

требуется усложнить скрипт таким образом чтоб он проверял копируемые файлы поимённо (содержимое не интересует пока), сравнивая со списком и при несовпадении ругался матом например мылом

в общем виде как-то так
буду ещё адаптировать.
#Очистка значений переменных
Remove-Variable test
Remove-Variable test1

#Обьявление переменных и формирование массивов
$test = @(Get-ChildItem E:\ptest\*.txt -name)
$test1 = @(Get-ChildItem E:\ptest\test1\*.txt -name)

#сравнение массивов и отправка уведомлений
if (@(Compare-Object $test $test1 -sync 0).Length -eq 0)
{
Send-MailMessage -to "<test@companyname.ru>" -from "<server@companyname.ru>" -subject "alarm" -body "ok" -smtpserver "192.168.10.100"
}
else
{
Send-MailMessage -to "<test@companyname.ru>", "<personalmail@gmail.com>" -from "<server@companyname.ru>" -subject "alarm" -body "trouble" -smtpserver "192.168.10.100"
};