PowerShell GUI搜索CSV日志结果异常:ISE正常GUI仅返回1条结果
问题原因与解决方案
核心问题:逻辑运算符优先级错误
PowerShell中-and的优先级高于-or,你的原表达式未正确分组,导致逻辑判断不符合预期。ISE中变量值刚好适配了错误逻辑,而GUI中变量值存在差异,最终出现结果不一致的情况。修正后的代码
通过括号明确逻辑分组,确保条件判断符合预期:(Import-Csv C:\User\Logs\Files\Calendar-Permissions-Log.csv | Where-Object { # 先匹配指定的Action类型 (($_."Action" -eq "Remove Permissions") -or ($_."Action" -eq "Grant Permissions")) -and # 匹配用户、日历、权限的指定条件 ($_."Add/Remove User" -eq $Add_Remove_Email.Text) -and ($_."To/From Calendar" -eq $To_From_Email.Text) -and ($_."Permission" -eq $WPFSelect_Permission.Text) -and # 匹配任一指定日期 (($_."Trigger Date" -eq $Date.Text) -or ($_."Trigger Date" -eq $Date_Remove.Text)) -and # 匹配Delegate Flag和私有项权限的条件 ($_."Delegate Flag Enabled" -like "Yes" -or $_."Delegate Flag Enabled" -eq $null) -and ($_."Can View Private Items" -like "Yes" -or $_."Can View Private Items" -eq $null) })."Task Name" | Out-GridView关键调整说明
- 给
Action的两个-or条件添加括号,确保先判断动作类型,再与其他条件做-and关联 - 给
Trigger Date的两个-or条件添加括号,确保日期为二选一匹配后,再和其余条件关联
- 给
内容的提问来源于stack exchange,提问作者Dust Ellse
相关产品推荐
相关产品推荐

