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

标签 powershell batch-file active-directory

我正在尝试为与 Active Directory 兼容的 LDAP 查询生成日期字符串 whenChanged field 。我正在使用 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.

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

最佳答案

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

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

关于powershell - 如何在批处理文件 FOR 命令中使用 PowerShell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16410640/

相关文章:

windows - 如何在 Powershell 中的 System.String 类型的字符串中添加值

batch-file - 批处理文件中出现意外的右括号且开头匹配

authentication - 如何配置 Tomcat 以使用 Windows NTLM 身份验证?

powershell - AD cmdlet 和 powershell 命令有什么区别?

powershell - 使Powershell脚本仅获取为该过滤器定义的前10000个文件

Powershell 将文件作为邮件附件发送

windows - 更改 Windows 命令提示符以仅显示当前文件夹

c++ - 命令行中的 Visual Studio 生成警告; IDE 没有

powershell - 如何使用Powershell或其他工具(递归)获取所有AD用户组?

regex - 正则表达式的固定位置