我已经找到了答案,但还没找到对我有用的东西。
我有一个在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" }"
答案 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 ($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 }"