从Powershell输出中删除空行

时间:2015-08-24 20:21:45

标签: powershell

我已经找到了答案,但还没找到对我有用的东西。

我有一个在Tripwire中使用的Powershell脚本来评估服务器的IIS版本。该值被返回,但我认为,由于空行,它不能被Tripwire解释。

请参阅下面的代码。提前谢谢!

%Windir%\system32\WindowsPowerShell\v1.0\powershell.exe    "$ErrorActionPreference='SilentlyContinue'; $iv=(get-itemproperty HKLM:\SOFTWARE\Microsoft\InetStp\  | select setupstring | ft -hidetableheaders); if ($iv.length -gt 0 | where {$_.versionstring -ne ""} ) { echo $iv } else { Write-Host -NoNewline "Not Installed" }"

1 个答案:

答案 0 :(得分:1)

额外行的原因是:|ft -hidetableheaders

直接使用Setupstring抓取Select-Object -ExpandProperty setupstring属性值:

$iv = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\InetStp\ | Select -ExpandProperty setupstring; 

表达式$iv.length -gt 0| where {$_.versionstring -ne ""}没有多大意义,完全等同于$iv.length -gt 0

您只需测试$iv

即可简化if语句
if ($iv) { 
    Write-Host $iv -NoNewline
} else {
    Write-Host 'Not Installed' -NoNewline 
}

因此该行变为:

%Windir%\system32\WindowsPowerShell\v1.0\powershell.exe "$ErrorActionPreference='SilentlyContinue';$iv=Get-ItemProperty HKLM:\SOFTWARE\Microsoft\InetStp\ | Select -Expand setupstring; if ($iv) { Write-Host $iv -NoNewline} else { Write-Host 'Not Installed' -NoNewline }"