PowerShell用ConvertFrom-StringData存多行字符串报错,求替代方案
PowerShell翻译文件存储多行字符串的解决方案
你用的嵌套here-string语法不被ConvertFrom-StringData的StringData参数支持,因为该参数要求键值对格式为key=value,value部分不能嵌套here-string标记,所以会触发解析错误。以下是几种可行的替代方案:
方案1:使用行续符(反引号`)实现多行值
在每行末尾添加反引号(注意反引号后面不能有空格或其他字符),让ConvertFrom-StringData将多行视为同一个值:
ConvertFrom-StringData -StringData @' msg_first = Ok1 msg_two = Ok2` Nok2 '@
方案2:使用换行转义序列`n
如果不需要在定义时保留换行格式,可以用`n转义序列代替实际换行,把值写在一行里:
ConvertFrom-StringData -StringData @' msg_first = Ok1 msg_two = Ok2`nNok2 '@
方案3:直接在.psd1翻译文件中使用here-string(推荐用于本地化场景)
如果是用Import-LocalizedData导入翻译文件,直接在.psd1文件中使用PowerShell原生的here-string语法即可,不需要依赖ConvertFrom-StringData的键值对格式:
- 创建翻译文件(比如
MyStrings.psd1):
@{ msg_first = "Ok1" msg_two = @" Ok2 Nok2 "@ }
- 在脚本中导入并使用:
Import-LocalizedData -BindingVariable MyStrings -BaseDirectory . -FileName MyStrings.psd1 # 调用多行字符串 Write-Output $MyStrings.msg_two
内容的提问来源于stack exchange,提问作者zelocalhost
相关产品推荐
相关产品推荐

