【问题标题】:Removing Blank Lines From Powershell Output从 Powershell 输出中删除空白行
【发布时间】:2015-08-24 20:21:45
【问题描述】:

我已经搜索了这个问题的答案,但还没有找到对我有用的东西。

我有一个 Powershell 脚本,它在 Tripwire 中用于评估服务器的 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" }"

【问题讨论】:

    标签: powershell


    【解决方案1】:

    多行的原因是这样的:|ft -hidetableheaders

    直接用Select-Object -ExpandProperty setupstring获取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 }"
    

    【讨论】:

    • 非常感谢!这完美!这节省了我的工作时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多