我正在尝试遍历多个文件以查看作业是否已完成。我是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"
}
}
答案 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"
}