如何从PowerShell变量中删除换行符
我正在尝试执行一些处理逻辑-基于树配置CSV文件并行运行一些命令:如何从PowerShell变量中删除换行符,powershell,newline,Powershell,Newline,我正在尝试执行一些处理逻辑-基于树配置CSV文件并行运行一些命令: Operation;Parent;Enabled;Propagated;Job_ID;Status;Started;Finished CA1;n/a;Y;N;;;; PROD1;n/a;Y;N;;;Y; CON1;CA1;N;N;;;Y; CON2;CON1;N;N;;;Y; 我将文件加载到变量中,然后尝试找到需要处理的下一步: $Data = Import-Csv -delimiter ";" .\config.csv $N
Operation;Parent;Enabled;Propagated;Job_ID;Status;Started;Finished
CA1;n/a;Y;N;;;;
PROD1;n/a;Y;N;;;Y;
CON1;CA1;N;N;;;Y;
CON2;CON1;N;N;;;Y;
我将文件加载到变量中,然后尝试找到需要处理的下一步:
$Data = Import-Csv -delimiter ";" .\config.csv
$NextStep = $Data | Select-Object -first 1 | Where-Object {$_.Started -eq ""}
$NextStepText = $NextStep.Operation | ft -autosize | out-string
问题是$NextStep.Operation似乎包含新行字符。当我显示它时,我得到:
PS C:\temp\SalesForce> $NextStep.operation
CA1
PS C:\temp\SalesForce> $NextStep.Operation.Contains("`n")
False
你知道我做错了什么吗?我希望显示内容时不带“伪”新行字符,即使contains方法说它不在那里
或者请建议如何做得更好。我还在学习PowerShell;到目前为止,我只是在谷歌上搜索这些命令,并试图将它们组合在一起。换行符不在您的数据中,而是由
输出字符串添加的。观察以下内容的输出(特别是在CA1
之后是否有换行):
如果以后打算将$NextStepText
用于除直接输出以外的任何内容,则不应在该步骤中使用格式表
(并且此脚本中不需要输出字符串
)。考虑<代码>格式表< /代码>(或任何<代码>格式-*/COS> CMDLASE)可用数据行的结尾。 为什么你认为在那里有一个新的行字符?如果您使用的是ISE,那么您发布的内容看起来不像是ISE。命令之间有一个空行是正常的(在v2/v3 ISE中,不确定v4),因此您发布的内容不会表明它包含任何新行字符
您可以随时检查$NextStep.Operation.Length,看看它是3还是4。如果有一个'n'在那里,它将显示在长度上。例如(从我的v3 PS ISE中复制并粘贴):
这是为了表明有一个新行字符被注入,它跟在文本后面,没有任何文本跟在新行字符后面,它看起来像这样:
PS C:\> $test = "Test`n"
PS C:\> $test
Test
PS C:\> $test.Length
5
PS C:\>
您会注意到,在第二个命令的文本“Test”后面有两个空行。第一行是注入变量的行,第二行是PS插入的强制行,用于显示命令之间的分隔。Hmm,我无法重现您看到的内容。我在V4.Alroc上,谢谢你的回答,这将是问题所在。我实际上想记录输出以进行调试。有没有办法删除这条新线?因为现在它弄乱了我的日志文件:[04.02.2014 22:36:36]:[-]:程序PS_Main.ps1已启动。[04.02.2014 22:36:36]:[D]:下一步输出:CA1[04.02.2014 22:36:36]:[-]:程序PS_Main.ps1完成时不使用格式表
。正如我演示的那样,只需使用原始值。添加换行符的是format table
。我在没有使用format table的情况下尝试了它,但它仍在添加新行。无论如何,我通过在输出字符串中添加-stream开关解决了这个问题:$NextStepText=$NextStep.Operation |输出字符串-stream
PS C:\> $test = "Test`nTest2"
PS C:\> $test
Test
Test2
PS C:\> $test.Length
10
PS C:\>
PS C:\> $test = "Test`n"
PS C:\> $test
Test
PS C:\> $test.Length
5
PS C:\>