PowerShell将字符串附加到.txt文件并省略空格

时间:2017-08-07 19:59:18

标签: powershell logging whitespace

问题

在日志文件中追加字符串的文本,但省略了空格的特定部分。

详细

所以我正在研究日志记录功能,我试图对日志条目的细节有所了解。利用PowerShell,我将字符串附加到日志中;但是,我偶然发现了一个小问题,希望有一个简单的解决方案可以让我保持代码的整体格式。

当我的代码如下:

WriteLog -LogName "somename" -Message "$User did some action
                                       `r`n-- $file was modified"

日志文件中的文本显示为:

04:37:33 PM SOMEUSER did some action

-- SOMEFILE was modified

而不是

04:37:33 PM SOMEUSER did some action
-- SOMEFILE was modified

据我了解,这是由于我的代码字符串中的空格被字面翻译成日志文件。

我还尝试将代码重写为:

WriteLog -LogName "somename" -Message "$User did some action" +
                                      "`r`n-- $file was modified"

但结束时发出错误声明无法执行此操作。有没有办法维护代码布局(为了便于阅读)并告诉应用程序忽略该空格?或者我需要修改我的应用程序以满足我的需求吗?

2 个答案:

答案 0 :(得分:2)

正确的解决方案是不要将你的字符串分成不同的行。你已经在字符串(`n)中有命令来创建一个新行。只需将整个字符串放在同一行,就可以避免使用不可见的新行格式。

例如:

WriteLog -LogName "somename" -Message "$User did some action `r`n-- $file was modified"

我并不完全确定你要尝试做什么,但是你可以在这个字符串中写出一个非常长的单行文本,利用新行字符创建任意数量的行。但是如果你想让它在代码中更具可读性,那么你可以在文本行之后使用`标记的组合,并使用+符号转到后续行,这将组合字符串,如下所示:

WriteLog -LogName "somename" -Message "$User did some action `r`n-- $file was modified, I also am writing more information here.`n Now I'm on my third line of data.`n now my fourth."`
+"`n Now my fifth"`
+"`n Now my sixth, and `n a seventh line as well."

如果您希望在代码中将每一行作为单独一行,您可以这样做:

WriteLog -LogName "somename" -Message "$User did some action"`
+"`n -- $file was modified"`
+"`n Line 3 of info."`
+"`n Line 4 of info."`
+"`n Line 5 of info."

答案 1 :(得分:2)

尝试使用括号:

Write-Log -LogName "somename" -Message ("$User did some action" + "`r`n" +
                                        "-- $file was modified")

可能会尝试将"$User did some action"之后的参数作为位置参数进行评估