代码之家  ›  专栏  ›  技术社区  ›  rickymartino

PowerShell Active Directory-无法在筛选器中为Get-ADUser使用数组值

  •  1
  • rickymartino  · 技术社区  · 2 年前

    我有两个变量; $test $accounts[0].upn

    两者都是字符串,都包含完全相同的值。

    当我跑步时:

    Get-ADUser -Filter "UserPrincipalName -eq '$test'"

    我得到了我想要的结果,但是当我跑步时:

    Get-ADUser -Filter "UserPrincipalName -eq '$accounts[0].upn'"

    它不会返回任何结果。

    我知道$accounts是一个数组,但我认为如果变量的类型和值都相同,我应该得到相同的结果。

    请参见下面的屏幕截图,以便更好地了解我正在努力实现的目标,我只做了 $测试 用于调试的变量,我希望命令可以使用 $帐户[0]。upn公司 . 抱歉,出于隐私原因,我不得不屏蔽一些个人信息,这不应该妨碍我理解屏幕截图。

    Demonstration Screenshot

    非常感谢您的帮助!

    1 回复  |  直到 2 年前
        1
  •  0
  •   Otter    2 年前

    这里的问题是,powershell不知道何时停止解释字符串中的变量(其名为 expression expansion ).

    所以要解决这个问题,您应该将任何带有属性的变量包装在子表达式中,以便powershell知道何时停止扩展它。

    Get-ADUser -Filter "UserPrincipalName -eq '$accounts[0].upn'"

    应该成为

    Get-ADUser -Filter "UserPrincipalName -eq '$($accounts[0].upn)'"

    请注意 $() 其中包含变量。