Войти

Показать полную графическую версию : [решено] Неизвестное количество параметров в аргументах задачи Планировщика задач.


nokogerra
17-12-2014, 11:45
Доброго времени суток.

Windows 2012 R2, Powershell v4.

Скрипт ps1 помещен в задачу Планировщика задач, некоторые переменные задаются как аргументы. Но есть необходимость задать таким образом несколько переменных, при чем они будут участвовать в условии, однако, я не знаю точного их количества, например в скрипте это выглядело бы так:

$a = "E:\1"
$b= "E:\2"
$Folders = Get-Childitem "E:\X" -Recurse -Directory | Where-Object {($_.Fullname -ne $a) -and ($_.Fullname -ne $b)}

В аргументах задачи выглядело бы так: -command -file "путь_к_сценарию" -a "E:\1" -b "E:\2"
Существует ли возможность без изменения скрипта задавать в аргументах задачи разное количество параметров (переменных). Подозреваю это должен быть массив, но возможно ли создать условие ($_.Fullname -ne "одному_из_элементов_массива")?

И логичный второй вопрос: гугл мне к сожалению не сказал ограничение поля "Аргументы" задачи планировщика, но тестовым путем установил что 1000 символов точно можно ввести, НО эти символы пойдут как команды при запуске программы Powershell, а ограничение интерфейса Start-Run насколько я знаю 259 символов. Не будет ли проблем в случае если количество символов в поле "Аргументы" превысит это значение?

nokogerra
17-12-2014, 13:31
Решено. Решение здесь (https://social.technet.microsoft.com/Forums/ru-RU/f19a1b8c-b954-420a-a64b-f54426d9400a/-?forum=scrlangru).

Iska
17-12-2014, 17:26
Для того, чтобы избежать ограничений на длину командной строки — придумали файлы инициализации. Т.е., в ini/xml или иного формата файле указываете аргументы, именованные или нет. Путь к файлу передаёте параметром.

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

Если к куче однотипных параметров прилагается ещё ряд параметров иного типа — путь к файлу указывается именованным аргументом. Ср. передачу имён машин в «psexec.exe» — перечислением или списком из файла.




© OSzone.net 2001-2012