Powershell 从cmd调用时字符串替换不起作用
我有以下PowerShell命令,当直接从PowerShell调用时,该命令工作得非常好: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
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)(\"\)\]))', ...
^^ ^^