Последовательное выполнение команд из txt
Имеем: txt-файл со списком команд для powershell
Задача: Выполнить эти команды.
ЗЫ: Выполнение команд из файла *.ps1 запрещено.
ЗЫЫ: Приветствуются вырианты на AutoIt .
РЕШЕНИЕ:
читать дальше »
c:\ps\file_name.bat
читать дальше »
Код:
powershell -c "& { function x { iex $input }; $((gc file_name.txt) -notmatch '(^$|#)' -join ';') | x }
c:\ps\file_name.txt
читать дальше »
Код:
$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
Подводные камни
читать дальше »
Цитата:
Цитата Foreigner
PS. Главное, что бы в файле не было комментариев ( "#" ) после команды. Я попробовал трехстрочник -- работает
PS1. Заметил еще, "{" и "}" в исходном файле не должны быть на отдельной строке. »
|
Цитата:
Цитата rvm.luma
+Не выносит команды типа:
powershell
exit
+ Знак начала цикла "{" нужно выставлять вслед за командой. »
|
|