Powershell循环遍历多个文件

时间:2017-08-07 21:39:17

标签: sql-server windows powershell

我正在尝试遍历多个文件以查看作业是否已完成。我是PowerShell的新手,在创建更详细的程序之前,我试图理解循环的基础知识。我无法弄清楚我的代码中有什么问题。当我运行程序时,不显示输出(“成功”或“失败”)。关于循环遍历sql目录文件以搜索特定字符串的任何建议也赞赏:)

Get-ChildItem "C:\Users\afila\Desktop\TEST" -Filter "*.txt" |
ForEach-Object{
if(Object.Contains("*Loaded successfully*"))
{
    Write-Host "Success" 
}
else
{
    Write-Host "Fail"
}

}

2 个答案:

答案 0 :(得分:0)

使用管道时,必须使用$_来表示传递给管道的对象。例如

Get-ChildItem C:\temp\ -Filter "txt" | 

Foreach-Object{
    if($_.Contains("my test info"))
    {
       write-host "success"
    }
}

$_与其他语言中的“this”类似,只是当前对象的表示。

答案 1 :(得分:0)

使用$ _,其中包含Object.Contains。它应该是" $ _。包含"。

由于您在IF语句中使用通配符,因此您也可以尝试使用。 - 默认情况下,使用通配符处理搜索:

Get-ChildItem "C:\Users\afila\Desktop\TEST" -Filter "*.txt" |
ForEach-Object{
if($_ -like "Loaded successfully")
{
    Write-Host "Success" 
}
else
{
    Write-Host "Fail"
}