Powershell 字符串保持 CR 和 LF

Powershell String keep CR & LF

提问人:Ahmet.B 提问时间:7/15/2021 更新时间:7/15/2021 访问量:94

问:

我想通过“MySql.Data.MySqlClient.MySqlConnection”在MySQL数据库中插入一个Blob,它工作正常,但Powershell从我的变量中删除了换行符:

$configString = Get-Content config.xml 
$configString > test5.xml
$strAddConfig = "INSERT INTO config_xml(Version,ConfigXML,MD5,Comment,ClientMinVersion) VALUES('2','" + $($configString) + "','$configMD5','BLABLA','5.0.0.0')"

当我将 $configString 变量通过管道传递到 Textfile 中时,CR&LF 字符将保留,当我通过复制粘贴输入 blob 时,也会考虑换行符。我尝试了具有不同报价组合的“strAddConfig”行,但没有成功。

谢谢你的帮助

MySQL 字符串 PowerShell 换行行

评论

1赞 Theo 7/15/2021
删除周围的单引号'$configMD5'
0赞 Ahmet.B 7/15/2021
我试过这个:“INSERT INTO config_xml(Version,ConfigXML,MD5,Comment,ClientMinVersion) VALUES('2', ” + $($configString) + “,$configMD 5,'BLABLA','5.0.0.0')”,但出现异常:“'字段列表'中的未知列'F4F0B5F96C03B548958D9E1C3D4949F2'” 它将哈希作为字段?
0赞 Ahmet.B 7/15/2021
否则,当我运行这个:“INSERT INTO config_xml(Version,ConfigXML,MD5,Comment,ClientMinVersion) VALUES('2',$configString,$configMD 5,'BLABLA','5.0.0.0')”时,我得到:“命令执行期间遇到致命错误。

答:

0赞 mklement0 7/15/2021 #1
# Read the text content *as a single, multi-line string*, using -Raw
$configString = Get-Content -Raw config.xml

# Use an expandable here-string for better formatting.
$strAddConfig = @"
INSERT INTO config_xml(Version,ConfigXML,MD5,Comment,ClientMinVersion)
VALUES('2','$configString','$configMD5','BLABLA','5.0.0.0')
"@

您的(主要)问题是使用了 without ,它存储了一个行数组,当一个数用于可扩展 字符串(带有字符串插值)时,它的(字符串化)元素是格分隔的:Get-Content config.xml-Raw$configString"..."

PS> $array = 'one', 'two'; "$array"
one two 

评论

1赞 Ahmet.B 7/15/2021
非常感谢,使用 get-content -raw 它可以正常工作:)
0赞 mklement0 7/15/2021
很高兴听到它,@Ahmet.B;另请参阅我刚刚添加到答案中的解释。