|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Последовательное выполнение команд из txt |
|
PowerShell - Последовательное выполнение команд из txt
|
Новый участник Сообщения: 8 |
Профиль | Отправить PM | Цитировать
Имеем: txt-файл со списком команд для powershell
Задача: Выполнить эти команды. ЗЫ: Выполнение команд из файла *.ps1 запрещено. ЗЫЫ: Приветствуются вырианты на AutoIt . РЕШЕНИЕ: |
|
Отправлено: 12:53, 04-09-2013 |
Ветеран Сообщения: 1754
|
Просто выполнить этот файл?
Цитата rvm.luma:
|
|
Отправлено: 13:49, 04-09-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
Последний раз редактировалось rvm.luma, 04-09-2013 в 14:18. Причина: добавил преследуемые задачи, проблемы Отправлено: 14:03, 04-09-2013 | #3 |
Ветеран Сообщения: 1754
|
rvm.luma,
Попробуй так, запускал из cmd.exe: powershell -c "& { function x { iex $input }; $((gc file.txt) -notmatch '(^$|#)' -join ';') | x } PS1. Заметил еще, "{" и "}" в исходном файле не должны быть на отдельной строке. Возможны и другие подводные камни. |
Последний раз редактировалось Foreigner, 04-09-2013 в 15:29. Отправлено: 15:16, 04-09-2013 | #4 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать c:\ps\file_name.bat
powershell -c "& { function x { iex $input }; $((gc file_name.txt) -notmatch '(^$|#)' -join ';') | x } $datenow = get-date -uformat "%Y.%m.%d_%H.%M.%S" ######################################################### #########################changed######################### ######################################################### $oucity = "moscow" $path = "c:\ps\all_pc\$datenow\" ######################################################### #########################changed######################### ######################################################### new-item $path -itemtype directory $excel = new-object -comobject excel.application import-module activedirectory $workbook = $excel.workbooks.add() $workbook.worksheets.item(3).delete() $workbook.worksheets.item(2).delete() $workbook.worksheets.item(1).name = $oucity $sheet = $workbook.worksheets.item($oucity) $out = get-adcomputer -filter * -searchbase "ou=$oucity,dc=mydomain,dc=com" -properties distinguishedname, name | select distinguishedname, name $sheet.cells.item(1,1) = "distinguishedname" $sheet.cells.item(1,2) = "name" $str = 2 foreach ($in in $out){$sheet.cells.item($str,1) = $in.distinguishedname $sheet.cells.item($str,2) = $in.name $str++} $range = $sheet.usedrange $range.entirecolumn.autofit() | out-null $excel.activeworkbook.saveas($path+"all_pc") $excel.quit() $datenow = get-date -uformat "%Y.%m.%d_%H.%M.%S" ######################################################### #########################changed######################### ######################################################### $oucity = "moscow" $path = "c:\ps\delete_pc_inactive\$datenow\" ######################################################### #########################changed######################### ######################################################### new-item $path -itemtype directory $excel = new-object -comobject excel.application import-module activedirectory $workbook = $excel.workbooks.add() $workbook.worksheets.item(3).delete() $workbook.worksheets.item(2).delete() $workbook.worksheets.item(1).name = $oucity $sheet = $workbook.worksheets.item($oucity) $out = get-adcomputer -filter * -searchbase "ou=$oucity,ou=computers4delete,dc=mydomain,dc=com" -properties distinguishedname, name | select distinguishedname, name $sheet.cells.item(1,1) = "distinguishedname" $sheet.cells.item(1,2) = "name" $str = 2 foreach ($in in $out){$sheet.cells.item($str,1) = $in.distinguishedname $sheet.cells.item($str,2) = $in.name $delete_pc_inactive = $sheet.cells.item($str,1).value() $str++} dsrm -subtree -exclude -noprompt -c "ou=$oucity,ou=computers4delete,dc=mydomain,dc=com" $range = $sheet.usedrange $range.entirecolumn.autofit() | out-null $excel.activeworkbook.saveas($path+"delete_pc_inactive") $excel.quit() $datenow = get-date -uformat "%Y.%m.%d_%H.%M.%S" ######################################################### #########################changed######################### ######################################################### $oucity = "moscow" $path = "c:\ps\pc_inactive_lastlogon\$datenow\" ######################################################### #########################changed######################### ######################################################### new-item $path -itemtype directory $excel = new-object -comobject excel.application import-module activedirectory $workbook = $excel.workbooks.add() $workbook.worksheets.item(3).delete() $workbook.worksheets.item(2).delete() $workbook.worksheets.item(1).name = $oucity $sheet = $workbook.worksheets.item($oucity) $out = get-adcomputer -filter * -searchbase "ou=users&pcs,ou=$oucity,dc=mydomain,dc=com" -properties distinguishedname, name, lastlogon | select distinguishedname, name, lastlogon $sheet.cells.item(1,1) = "distinguishedname" $sheet.cells.item(1,2) = "name" $sheet.cells.item(1,3) = "lastlogon" $beforedate = (get-date).addmonths(-2) $str = 2 foreach ($in in $out){$sheet.cells.item($str,1) = $in.distinguishedname $sheet.cells.item($str,2) = $in.name $sheet.cells.item($str,3) = $in.lastlogon if ($beforedate -le $in.lastlogon){$sheet.cells.item($str,4) = "disable"} $str++} $range = $sheet.usedrange $range.entirecolumn.autofit() | out-null $excel.activeworkbook.saveas($path+"pc_inactive_lastlogon") $excel.quit() $datenow = get-date -uformat "%Y.%m.%d_%H.%M.%S" ######################################################### #########################changed######################### ######################################################### $oucity = "moscow" $path = "c:\ps\users_inactive\$datenow\" ######################################################### #########################changed######################### ######################################################### new-item $path -itemtype directory $excel = new-object -comobject excel.application $beforedate = (get-date).addmonths(-1) import-module activedirectory function inactive_users{$workbook = $excel.workbooks.add() $workbook.worksheets.item(3).delete() $workbook.worksheets.item(2).delete() $workbook.worksheets.item(1).name = $ouplace $sheet = $workbook.worksheets.item($ouplace) $out = get-aduser -filter * -searchbase "ou=$ouplace,ou=users&pcs,ou=$oucity,dc=mydomain,dc=com" -properties distinguishedname, name, postalcode, pager, pwdlastset, whencreated | select distinguishedname, name, postalcode, pager, pwdlastset, whencreated $sheet.cells.item(1,1) = "distinguishedname" $sheet.cells.item(1,2) = "name" $sheet.cells.item(1,3) = "postalcode" $sheet.cells.item(1,4) = "pager" $sheet.cells.item(1,5) = "pwdlastset" $sheet.cells.item(1,6) = "whencreated" $sheet.cells.item(1,12) = "0" $sheet.cells.item(1,12).numberformat = 0 $sheet.cells.item(1,13) = "disable" $str = 2 foreach ($in in $out){$sheet.cells.item($str,1) = $in.distinguishedname $sheet.cells.item($str,2) = $in.name $sheet.cells.item($str,3) = $in.postalcode $sheet.cells.item($str,4) = $in.pager $sheet.cells.item($str,5).numberformat = 0 $sheet.cells.item($str,5) = $in.pwdlastset $sheet.cells.item($str,6) = $in.whencreated if ($in.pwdlastset -eq 0 ){if ($beforedate -gt $in.whencreated){$sheet.cells.item($str,7) = "disable"}} if ($sheet.cells.item($str,7).value() -eq $sheet.cells.item(1,13).value()){$inactive = $sheet.cells.item($str,1).value() $objuser = [adsi]"ldap://$inactive" $objuser.psbase.invokeset("accountdisabled", $true) $objuser.setinfo() move-adobject -identity "$inactive" -targetpath "ou=inactive,ou=$oucity,dc=mydomain,dc=com"} $str++} $sheet.cells.item(1,12) = "" $sheet.cells.item(1,13) = "" $sheet.cells.item(1,11) = "" $range = $sheet.usedrange $range.entirecolumn.autofit() | out-null $excel.activeworkbook.saveas($path+$ouplace) $excel.quit()} $ouplace = "office" inactive_users $ouplace = "points" inactive_users $ouplace = "sc" inactive_users $ouplace = "warehouse" inactive_users |
|
Последний раз редактировалось rvm.luma, 06-09-2013 в 14:18. Причина: исправил решение Отправлено: 13:24, 06-09-2013 | #5 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
powershell exit + Знак начала цикла "{" нужно выставлять вслед за командой. |
|
Отправлено: 14:21, 06-09-2013 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] Выполнение Exchange команд | Ыть | Скриптовые языки администрирования Windows | 6 | 15-02-2012 20:07 | |
CMD/BAT - Выполнение команд в фоновом режиме браузера | ZeVSalt | Скриптовые языки администрирования Windows | 4 | 10-11-2011 07:56 | |
CMD/BAT - выполнение команд из списка в txt файле | systemroot | Скриптовые языки администрирования Windows | 2 | 12-02-2011 17:49 | |
PowerShell - Удаленное выполнение команд Powershell + WMI | nigra | Скриптовые языки администрирования Windows | 0 | 19-05-2010 16:36 | |
Загрузка - Выполнение DOS команд перед загрузкой Windows | Gof | Microsoft Windows 2000/XP | 14 | 24-07-2007 06:03 |
|