从Windows CMD运行PowerShell命令的命令

考虑:

(Get-Content Rel_DDL.SQL) | ForEach-Object { 
  $_ -replace "SWIFT [d.]+", "SWIFT 2.4.0" 
} | Set-Content Rel_DDL.SQL

上面的PowerShell代码在SWIFT 2.4.0中用SQL文件替换SWIFT 2.3.0 ,当我通过PowerShell运行时可以正常工作。

我想通过Windows CMD运行PowerShell命令,但是出现错误。


在该.bat脚本中使用powershell命令。 我不会写入与输入相同的文件。 是的,我知道这是有效的,因为Get-Content读取整个文件,但这不是一个好习惯。

powershell -NoProfile -Command "(Get-Content Rel_DDL.SQL) |" ^
    "ForEach-Object { $_ -replace 'SWIFT [d.]+', 'SWIFT 2.4.0' } |" ^
    "Out-File -FilePath Rel_DDL2.SQL -Encoding Default"

您可以使用-command参数在CMD Windows中使用Powershell.exe命令。 你试过了吗?

-命令

Executes the specified commands (and any parameters) as though they were
typed at the Windows PowerShell command prompt, and then exits, unless
NoExit is specified. The value of Command can be "-", a string. or a
script block.

如果Command的值是“ - ”,则从标准输入中读取命令文本。 如果Command的值是一个脚本块,则脚本块必须用大括号({})括起来。

只有在Windows PowerShell中运行PowerShell.exe时才可以指定一个脚本块。 脚本块的结果作为反序列化的XML对象返回到父shell,而不是活动对象。

如果Command的值是一个字符串,则Command必须是命令中的最后一个参数,因为在该命令之后键入的任何字符都将被解释为命令参数。

要编写运行Windows PowerShell命令的字符串,请使用格式:“&{}”,其中引号表示字符串,并且调用操作符(&)会导致执行该命令。

链接地址: http://www.djcxy.com/p/30251.html

上一篇: Command to run PowerShell command from Windows CMD

下一篇: No output from Powershell command when run from script vs cli