You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中.Contains始终返回False的问题排查求助

问题原因与解决办法

问题根源

你用$Test = cmd.exe /c 'net user B02201R /domain'得到的$Test是字符串数组(Object[]),数组里的每个元素对应net user输出的一行文本。而Contains方法是用来判断数组中是否存在完全等于目标值的元素——但INet-User只是数组某一行里的子字符串,不是整个元素,所以$Test.Contains('INet-User')必然返回False。

解决办法

给你几个实用的处理方式:

  • 方式一:用PowerShell的-match操作符
    直接检查数组中是否有包含目标子串的元素,返回布尔值:

    [bool]($Test -match 'INet-User')
    

    -match会自动遍历数组,只要有任意一行包含INet-User就会返回对应的行,用[bool]转成布尔结果。

  • 方式二:合并数组为单个字符串后用Contains
    把数组的所有行拼接成一个大字符串,再检查子串是否存在:

    ($Test -join "`n").Contains('INet-User')
    

    "n"`是换行符,保证拼接后的文本和原输出格式一致。

  • 方式三:用PowerShell原生AD命令(更可靠)
    避免解析cmd输出的麻烦,直接用ActiveDirectory模块查询用户组:

    # 需先导入AD模块,适合域环境
    Import-Module ActiveDirectory
    $userGroups = Get-ADUser B02201R -Properties MemberOf | Select-Object -ExpandProperty MemberOf
    $userGroups -match 'INet-User'
    

    这种方式不需要处理文本格式,结果更准确。

内容的提问来源于stack exchange,提问作者J0nsan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:39:59