我有一个脚本工作,它使用哈希表来存储和比较值,然后将输出写入文本文件。以下是我的输出中使用和不使用NoNewLine时会发生什么的示例:
使用NoNewLine:
All servers are all on Version 19.1.5
没有NoNewLine:
All server are all on
Version 19.1.5
所以,NoNewLine解决了这个问题,但我一直在使用Powershell 5.0的服务器上进行测试。当我在另一台服务器上测试它时,Powershell没有识别NoNewLine,因为它是在4.0版本上。不幸的是,在新版本的PS上获取所有服务器都不是一个选项,那么有一种简单的方法可以使旧版本的PS版本能够处理NoNewLine吗?我一直在谷歌上搜索一段时间,但没有找到任何好的替代品。我尝试了整个“n r
”的事情,但无法让它发挥作用。这是我使用NoNewLine的代码:
if (@($TableVersion.Values | Group-Object).Count -eq 1) {
if (@($TableHash.Values | Group-Object).Count -eq 1) {
Write-Output "The servers are all on " $TableVersion.Serverapps01 | Out-File D:\Results$Timestamp.txt -NoNewline;
}
else {
Write-Output "The servers are all on " $TableVersion.Serverapps01 " but there are differences in the build files." | Out-File D:\Results$Timestamp.txt -NoNewline;
}
}
else {
@(Write-Output "The server versions do not match: "
$TableVersion.GetEnumerator() | Sort -Property Name | Format-Table -HideTableHeaders) | Out-File D:\Results$Timestamp.txt;
}
答案 0 :(得分:4)
只需将一个字符串发送到Out-File
:
Write-Output "The servers are all on $($TableVersion.Serverapps01) but there are differences in the build files." |Out-File D:\Results$Timestamp.txt
答案 1 :(得分:2)
您也可以使用字符串和-f
(格式)运算符:
"The servers are all on {0} but there are differences in the build files." -f $TableVersion.Serverapps01 | Out-File D:\Results$Timestamp.txt
Write-Output
很好但不必要。