Решил освоить PowerShell. Подвернулась подходящая задача - необходимо настроить на сервере очистку жесткого диска в зависимости от свободного места. Будем удалить старые файлы в определенном каталоге (старые бэкапы).
Скрипт:
$d = "d:\1" // объявляю переменную, в данном случае путь к каталогу
cd $d // перехожу в каталог
psdrive | ForEach-Object {if ($_.free -gt 10000000000 -and $_.name -eq "d"){ls $d | Sort-Object LastWriteTime -descending | select LastWriteTime, name -last 2| ForEach-Object {Remove-item $_.name -whatif}}} // см. ниже
Скрипт:
$d = "d:\1" // объявляю переменную, в данном случае путь к каталогу
cd $d // перехожу в каталог
psdrive | ForEach-Object {if ($_.free -gt 10000000000 -and $_.name -eq "d"){ls $d | Sort-Object LastWriteTime -descending | select LastWriteTime, name -last 2| ForEach-Object {Remove-item $_.name -whatif}}} // см. ниже
// psdrive - показать все диски
// | - передать данные дальше по конвееру
// ForEach-Object - перебираем диски по порядку
// if ($_.free -gt 10000000000 -and $_.name -eq "d") - находим диск D, у которого меньше 10Gb
// ls $d - (ls, dir в данном случае псевдонимы основной команды get-childitem) получаем список файлов и каталогов внутри данного
// Sort-Object LastWriteTime -descending - сортируем объекты по времени последнего изменения в обратном понятке
// select LastWriteTime, name -last 2 - выбираем последнии две записи, выводим поля время и имя
// Remove-item $_.name - удаляем файлы с этими именами
// -whatif - симулируем данный скрипт для проверки
Данный скрипт сохранил с расширением .ps1. Запуск данного файла осуществляю через .bat файл с таким содержимым:
powershell.exe d:\psdrive01.ps1
Файл с расширением .bat запускаю через планировщик заданий.
Есть еще один нюанс при запуске. По умолчанию выполнение сценариев PowerShell в системе запрещено. Т.к. в скриптах может находится вредоносный код, который может нанести вред системе. По соображениям безопасности скрипты PowerShell должны быть подписаны цифровой подписью, такой подход называется политика выполнения. 

Для тестирования скриптов можно отключить проверку выполнения для локальный скриптов. Для этого запускаем консоль PowerShell от имени администратора и вводим команду:
Set-ExecutionPolicy RemoteSigned
Подтверждаем изменение политики выполнения – [Y] Да.
Теперь все ЛОКАЛЬНЫЕ сценарии PowerShell будут выполняться без подписи и сценарий загруженные из интернета с цифровой подписью надежного издателя.