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

4
我正在尝试生成一个日期字符串,以便与Active Directory的"whenChanged"字段兼容的LDAP查询。我使用CSVDE将AD数据导入CSV,并需要一个LDAP查询来过滤最近2天内更改的结果。我根据Stack Overflow上找到的几个示例拼凑出以下FOR命令,以生成比较字符串的第一部分:
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
已解决。在批处理文件中,变量需要以 %% 为前缀。 - Brian Rowland
4
建议:如果您已经解决了这个问题,请回答自己的问题并(如果允许)接受该答案。(附注:在 PowerShell 中,您可以使用 AD 和 CSV 而不需要外部组件来解决所有问题。) - Richard
PowerShell确实允许使用cmd命令,你知道吗? - fftk4323
1个回答

2
我正在偷他的果汁...在批处理文件中,FOR循环变量需要有双百分号%%。因此,您的代码应该像这样:
FOR /F "usebackq" %%i in (<snipped-powershell-command>) DO SET daysAgo=%%i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接