如何在批处理文件FOR命令中使用PowerShell?

我正在尝试为与Active Directory whenChanged字段兼容的LDAP查询生成日期字符串.我正在使用CSVDE将AD数据拉入CSV并需要LDAP查询,该查询会将结果过滤到过去2天内更改的项目.我拼凑了以下FOR命令,根据Stack Overflow上的一些示例生成比较字符串的第一部分:

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.

什么导致命令轰炸?谢谢.

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

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