2013-05-07 2 views
4

Я пытаюсь создать строку даты для запроса LDAP, совместимого с полем Active Directory whenChanged. Я вытаскиваю данные AD в CSV, используя CSVDE, и вам нужен запрос LDAP, который будет фильтровать результаты для тех элементов, которые были изменены за последние 2 дня. Я кусочкам следующие FOR команды для создания первой части строки сравнения на основе нескольких примеров найти здесь на переполнение стека:Как использовать PowerShell в команде командного файла FOR?

FOR /F "usebackq" %i in (`PowerShell $date^= [DateTime]::Today.AddDays^(-2^)^; $date.ToString^('yyyyMMdd'^)`) DO SET daysAgo = %i 

Это для команды отлично работает из командной строки, но бомбы внутри пакетного сценария , с последующим выходом:

:Today.AddDays(-2); was unexpected at this time. 

Что вызывает у команды бомба? Благодарю.

+1

Решено. Переменные должны иметь префикс w/'%%' внутри командного файла. –

+4

Предложение: Если вы решили это, ответьте на свой вопрос и (когда это разрешено) примите этот ответ. (PS. Вся ваша проблема может быть решена в PSH: AD и CSV включены без внешних компонентов.) – Richard

+0

Силовая оболочка действительно позволяет командам cmd, вы знаете, что правильно? – fftk4323

ответ

2

Я краду его сок ... FOR переменные итератора в пакетном файле должны иметь знак двойного процента, %%. Итак, ваша линия будет выглядеть так:

FOR /F "usebackq" %%i in (<snipped-powershell-command>) DO SET daysAgo=%%i