PowerShell Active Directory - 无法在 Get-ADUser 的过滤器中使用数组值
PowerShell Active Directory - Can't use array value in filter for Get-ADUser
我有两个变量; $test
和 $accounts[0].upn
两者都是字符串,都包含完全相同的值。
当我运行:
Get-ADUser -Filter "UserPrincipalName -eq '$test'"
我得到了我想要的结果,但是当我 运行:
Get-ADUser -Filter "UserPrincipalName -eq '$accounts[0].upn'"
它没有return任何结果。
我知道 $accounts 是一个数组,但我想我应该得到相同的结果,因为变量的类型和值都相同。
请参阅下面的屏幕截图,以便更好地了解我想要实现的目标,我只制作了 $test
变量用于调试,我希望该命令与 $accounts[0].upn
一起使用。抱歉,出于隐私原因,我不得不涂掉一些个人信息,这不应该妨碍理解屏幕截图。
Demonstration Screenshot
非常感谢任何帮助!
这里的问题是 powershell 不知道何时停止解释字符串中的变量(它称为 expression expansion)。
因此,要解决此问题,您应该将任何具有属性的变量包装在子表达式中,以便 powershell 知道何时停止扩展它。
Get-ADUser -Filter "UserPrincipalName -eq '$accounts[0].upn'"
应该变成
Get-ADUser -Filter "UserPrincipalName -eq '$($accounts[0].upn)'"
注意 $()
里面有你的变量。
我有两个变量; $test
和 $accounts[0].upn
两者都是字符串,都包含完全相同的值。
当我运行:
Get-ADUser -Filter "UserPrincipalName -eq '$test'"
我得到了我想要的结果,但是当我 运行:
Get-ADUser -Filter "UserPrincipalName -eq '$accounts[0].upn'"
它没有return任何结果。
我知道 $accounts 是一个数组,但我想我应该得到相同的结果,因为变量的类型和值都相同。
请参阅下面的屏幕截图,以便更好地了解我想要实现的目标,我只制作了 $test
变量用于调试,我希望该命令与 $accounts[0].upn
一起使用。抱歉,出于隐私原因,我不得不涂掉一些个人信息,这不应该妨碍理解屏幕截图。
Demonstration Screenshot
非常感谢任何帮助!
这里的问题是 powershell 不知道何时停止解释字符串中的变量(它称为 expression expansion)。
因此,要解决此问题,您应该将任何具有属性的变量包装在子表达式中,以便 powershell 知道何时停止扩展它。
Get-ADUser -Filter "UserPrincipalName -eq '$accounts[0].upn'"
应该变成
Get-ADUser -Filter "UserPrincipalName -eq '$($accounts[0].upn)'"
注意 $()
里面有你的变量。