Благодаря xaegr скрипт был не много оптимизирован.
Во-первых удаление файлов старше семи дней. На мой взгляд, (а я далёк от програмирования очень сильно) тут всё верно. Берутся все файлы и каждый из них проверяется, старше или нет, если старше, то удалить, если нет, то пропустить. Но с точки зрения PoSh тут всё гораздо проще. Не нужно перебирать файлы, надо сразу выбрать те которые не соответствуют и потом удалить их. Вот что было
get-childitem c:\backup_portal\sites |
foreach-object {if ($_.creationtime -lt (get-date).AddDays(-7)) {remove-item c:\backup_portal\sites\$_}}
и вот что получилось
get-childitem c:\backup_portal\sites | where-object {$_.creationtime -lt (get-date).AddDays(-7)} | remove-item
Ну и формирование даты. Этого я просто не знал
$file = «c:\backup_portal\sites\»+$date.year+»-»+$date.month+»-»+$date.day+»-»+$_+».bak»
заменяется на
$file = «C:\backup_portal\sites\{0:yyyy-M-dd}-$_.bak» -f (get-date)
итого весь скрипт
# Удаляем файлы старше недели
get-childitem c:\backup_portal\sites | where-object {$_.creationtime -lt (get-date).adddays(-7)} | remove-item
# Берём список сайтов из файла и каждый сайт экспортируем
Get-Content «c:\backup_portal\list.txt» | ForEach-Object {
$date = Get-Date
$file = «C:\backup_portal\sites\{0:yyyy-M-dd}-$_.bak» -f (get-date)
$url = «http://portal/$_»
./stsadm.exe -o export -url $url -filename $file}
