Powershell 从cmd调用时字符串替换不起作用

Powershell 从cmd调用时字符串替换不起作用,powershell,cmd,Powershell,Cmd,我有以下PowerShell命令,当直接从PowerShell调用时,该命令工作得非常好: Get-ChildItem -r -include 'AssemblyInfo.cs' ` | foreach-object { $a = $_.fullname; ( get-content $a ) ` | foreach-object { $_ -replace '((\[assembly:\sAssemblyVersion\(")(\d\.\d\.\d\.\d)("\)\]))', '$1[ass

我有以下PowerShell命令,当直接从PowerShell调用时,该命令工作得非常好:

Get-ChildItem -r -include 'AssemblyInfo.cs' `
| foreach-object { $a = $_.fullname; ( get-content $a ) `
| foreach-object { $_ -replace '((\[assembly:\sAssemblyVersion\(")(\d\.\d\.\d\.\d)("\)\]))', '$1[assembly:AssemblyInformationalVersion("$3-alpha")]' } ` 
| Out-File $_.fullname }
但是,当从cmd调用时(我们的Buildservers进程在cmd中运行),它不会引发错误,但也不会按预期替换字符串(可以从任何cmd窗口复制):

我尝试了使用
&`来转义引号和命令,但没有任何帮助


我遗漏了什么?

命令字符串中有双引号:

... -replace '((\[assembly:\sAssemblyVersion\(")(\d\.\d\.\d\.\d)("\)\]))', ...
                                              ^                  ^
必须为CMD转义这些参数:

... -replace '((\[assembly:\sAssemblyVersion\(\")(\d\.\d\.\d\.\d)(\"\)\]))', ...
                                              ^^                  ^^

命令字符串中有双引号:

... -replace '((\[assembly:\sAssemblyVersion\(")(\d\.\d\.\d\.\d)("\)\]))', ...
                                              ^                  ^
必须为CMD转义这些参数:

... -replace '((\[assembly:\sAssemblyVersion\(\")(\d\.\d\.\d\.\d)(\"\)\]))', ...
                                              ^^                  ^^