在Powershell中,我可以在foreach语句中使用select-string -quiet开关

时间:2013-09-20 13:14:26

标签: powershell select-string

我正在尝试编写一个脚本来检查一个字符串是否在一个文件中,如果它继续并检查下一个并继续直到所有都被检查,如果它找到一个不存在,那么脚本将终止。我能否在if语句中使用带有布尔结果(select-string开关)的-quiet语句。 pinglist.txt文件包含服务器列表,另一个_pinglist.ini包含大量服务器。我是新手,请原谅我糟糕的脚本。感谢

$Original_File = 'C:\Jobs\Powershell\Pinger\Other_PingList.ini'

$PingList= 'C:\Jobs\Powershell\pinglist.txt'

#

Foreach ($item in $pingList)

{If (Select-String $Original_File -pattern $item -quiet) {

Write-Host "Servers Present In File - Carrying on"

}}
Else {

   Write-Host "Servers Not Present In File - Terminating"

}

2 个答案:

答案 0 :(得分:3)

尝试一下

$Original_File = gc 'C:\Jobs\Powershell\Pinger\Other_PingList.ini'
$PingList= gc 'C:\Jobs\Powershell\pinglist.txt'    

Foreach ($item in $pingList)
{
    If ($Original_File -match $item ) 
    {
        Write-Host "Servers $item Present In File - Carrying on"
    }
    Else
    {
        Write-Host "Servers $item Not Present In File - Terminating"
    }
}

答案 1 :(得分:2)

  

我能否在if语句中使用带有布尔结果的select-string语句(-quiet switch)

是。来自文档:

  

-Quiet

     

返回布尔值(true或false),而不是MatchInfo对象。如果找到模式,则值为“true”;否则,该值为“false”。

Source

您的当前脚本存在问题吗?是什么促使这个问题开始?