2013-05-07 143 views
4

我正在尝试为与Active Directory whenChanged字段兼容的LDAP查询生成日期字符串。我正在使用CSVDE将AD数据转换为CSV格式,并且需要一个LDAP查询,以便将结果过滤为最近2天内更改的项目。我拼凑以下FOR命令生成基于几个例子比较字符串的第一部分,在这里发现的堆栈溢出:如何在批处理文件FOR命令中使用PowerShell?

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

这FOR命令的工作从命令提示符很好,但炸弹批处理脚本中,带有以下输出:

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

什么是导致命令炸弹?谢谢。

+1

解决。变量需要在批处理文件中以w /'%%'作为前缀。 – 2013-05-07 03:39:54

+4

建议:如果你已经解决了这个问题,那么回答你自己的问题,并且(如果允许的话)接受这个答案。 (PS。所有问题都可以在PSH中解决:AD和CSV都包含在外部组件中。) – Richard 2013-05-07 08:17:25

+0

电源外壳确实允许cmd命令,您知道吗? – fftk4323 2013-06-10 13:37:20

回答

2

我正在偷他的果汁...... FOR批处理文件中的迭代器变量需要有一个双重百分号,%%。所以,你的线看起来像这样

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