我对PowerShell很陌生。最近,我的任务是弹出错误消息,该错误消息将帮助本地用户确定MS SQL按需数据库合并是否有效。我编写了一个脚本,可以执行以下操作:

  • 运行执行合并的批处理文件
  • 将文本日志文件的结果读入变量
  • 检查变量中是否包含单词“ERROR”的任何实例,并根据是否在日志文件中找到单词error来弹出成功或失败对话框。

    我以为既简单又快捷,但似乎在条件语句中苦苦挣扎。这是脚本:
    cmd /c c:\users\PERSON\desktop\merge.bat
    
    $c = get-content c:\replmerg.log
    
    if ($c -contains ("ERROR"))
    {
        $a = new-object -comobject wscript.shell
        $b = $a.popup(“ERROR - Database Merge“,0,”Please Contact Support”,1)
    }
    
    else
    {
        $a = new-object -comobject wscript.shell
        $b = $a.popup(“SUCCESS - Database Merge“,0,”Good Job!”,1)
    }
    

    现在发生的事情是该脚本运行并且仅跳到成功消息。我可以确认,仅在powershell中运行“get-content”命令将自己产生一个变量,然后可以调用该变量并显示日志文件的内容。但是,我的脚本并未出现,好像它实际上是在检查$ c变量中的单词,然后按预期方式弹出错误消息。我在这里想念什么?
  • 最佳答案

    克里斯蒂安的答案是正确的。您还可以使用 -match 运算符。例如:

    if ((Get-Content c:\replmerg.log) -match "ERROR")
    {
        'do error stuff'
    }
    else
    {
        'do success stuff'
    }
    

    如果要区分大小写,可以使用 -cmatch

    关于sql-server-2008 - 在String中搜索变量,然后在PowerShell中运行条件语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5886003/

    10-12 21:27