从Windows CMD运行PowerShell命令的命令

时间:2017-10-03 06:10:11

标签: powershell cmd

考虑:

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

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

我想通过Windows CMD运行PowerShell命令,但我收到错误。

2 个答案:

答案 0 :(得分:1)

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

-Command

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命令的字符串,请使用以下格式:"& {}"其中引号表示一个字符串,而调用操作符(&)导致该命令被执行。

答案 1 :(得分:1)

在.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"