我试图让所有这些都集中在一条线上,但我尝试的一切都不起作用。我试过 `b 但这不会让你退格到上面的行。我尝试将条件与第一个 Add-Content 内联,但这也不起作用。
Add-Content $txtpath "p: $strPhone x $strXTEN | "
if ($strMobile -ne $null) { Add-Content $txtpath "`m: strMobile | " }
Add-Content $txtpath "$strFax"
我试图让所有这些都集中在一条线上,但我尝试的一切都不起作用。我试过 `b 但这不会让你退格到上面的行。我尝试将条件与第一个 Add-Content 内联,但这也不起作用。
Add-Content $txtpath "p: $strPhone x $strXTEN | "
if ($strMobile -ne $null) { Add-Content $txtpath "`m: strMobile | " }
Add-Content $txtpath "$strFax"
我认为您想要做的一种方法是使用 -f 格式运算符,如下所示:
$text = "p: $strPhone x $strXTEN {0}" -f $( if ($strMobile) {"| m: $strMobile"})
Add-Content $txtpath $text
您不能使用多个 Add-Content 调用,因为每个调用都会附加一个换行符。很久以前,我记录了一个NoNewline
关于 Add-Content 参数的建议。你可以在这里投票。
您可以为此使用 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()
看起来微软-NoNewLine
在 2015 年听过并将参数添加到 Add-Content 中:
https://devblogs.microsoft.com/scripting/the-powershell-5-nonewline-parameter/