【问题标题】:using "-Filter" and "-Like" with a variable使用带有变量的“-Filter”和“-Like”
【发布时间】:2021-04-16 17:53:26
【问题描述】:

我有拉头发的问题(我想)

代码如下: $dn="abc.com"

Get-Recipient -Filter {EmailAddresses -Like '$dn'} -- 不起作用
Get-Recipient -Filter {EmailAddresses -Like '*$dn*'} -- 不起作用
Get-Recipient -Filter {EmailAddresses -Like *'$dn'*} -- 不起作用
Get-Recipient -Filter {EmailAddresses -Like '*abc.com*'} -- 工作

如何使它与变量一起工作,而不是文字字符串值?

提前致谢。

【问题讨论】:

    标签: powershell filter exchange-server


    【解决方案1】:

    单引号内的PowerShell变量没有展开,所以$dn不是abc.com而是$dn,把单引号换成双引号就好了。

    【讨论】:

    • 对不起,但这仍然给了我一个空的回报。
    • 真正的问题是使用脚本块 ({ ... }),它通过逐字(未扩展)内容绑定到 [string]-typed -Filter 参数,而不管该内容是什么是。
    【解决方案2】:

    使用expandable string(插入字符串,"..."):

    Get-Recipient -Filter "EmailAddresses -Like '*$dn*'"
    

    注意Get-Recipient-Filter 参数是一个字符串,使用script block ({ ... }) 不仅没有必要,而且会导致概念上的混乱。 p>

    实际上,当传递一个脚本块时,它的逐字内容{}除外)作为字符串值,所以没有扩展变量引用发生。

    • 注意谢谢,AdminOfThings:与Get-ADUser(请参阅this answer)不同,Get-Recipient 可以执行自己的变量解释,因此可扩展如果要在过滤器中使用除 $null$true$false 之外的 PowerShell 变量或表达式,则始终需要字符串 ("..."),然后必须将其转义为 @987654341 @、`$true`$false。 否则,使用-引号(逐字字符串,'...'),其中不需要转义(除了将嵌入的' 转义为'') - 请参阅Recipient filters in Exchange PowerShell commandsstring literals in PowerShell

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-26
      • 2014-11-13
      相关资源
      最近更新 更多