添加条件在一条线上的内容

时间:2013-08-19 18:10:47

标签: powershell

我正试图让所有这一切都在一条线上,但我尝试的一切都行不通。我试过`b但是这并没有让你回到上面的那一行。我尝试将条件与第一个Add-Content内联,但这也不起作用。

Add-Content $txtpath "p: $strPhone x $strXTEN  |  "
if ($strMobile -ne $null) { Add-Content $txtpath "`m: strMobile  |  " }
Add-Content $txtpath "$strFax"

3 个答案:

答案 0 :(得分:1)

我想做的事情的一种方法是使用-f格式运算符,如下所示:

$text =  "p: $strPhone x $strXTEN {0}" -f $( if ($strMobile) {"| m: $strMobile"})   
Add-Content $txtpath $text

答案 1 :(得分:1)

您不能使用多个Add-Content调用,因为每个调用都会追加换行符。很久以前我在Add-Content上记录了NoNewline参数的建议。您可以为其投票here

您可以使用StringBuilder,然后通过Add-Content或Set-Content输出其内容:

$sb = new system.text.stringbuilder
[void]$sb.Append("p: $strPhone x $strXTEN  |  ")
if ($strMobile -ne $null) { [void]$sb.Append("`m: strMobile  |  ") }
[void]$sb.Append($strFax)
Add-Content $txtPath $sb.ToString()

答案 2 :(得分:0)

Microsoft似乎在2015年收听了-NoNewLine参数并将其添加到“添加内容”中:

https://devblogs.microsoft.com/scripting/the-powershell-5-nonewline-parameter/