Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Неизвестное количество параметров в аргументах задачи Планировщика задач. (http://forum.oszone.net/showthread.php?t=292681)

nokogerra 17-12-2014 11:45 2444996

Неизвестное количество параметров в аргументах задачи Планировщика задач.
 
Доброго времени суток.

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 2445029

Решено. Решение здесь.

Iska 17-12-2014 17:26 2445119

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

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

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


Время: 20:55.

Время: 20:55.
© OSzone.net 2001-