这很漂亮:
Get-Mailbox -Filter {DisplayName -like "Axel*"}
现在,我想在函数中重复使用此函数。不幸的是,这种构造严重失败了:
> $name = "Axel*"
> Get-Mailbox -Filter {DisplayName -like $name}
我不是超级强者,但我认为(!)我发现闭包(我认为{Displayname -eq ...}
是一个)是在执行时求值的,它是 in Get-Mailbox
cmdlet,该变量在外部作用域中不再可用。
所以我的问题是-我该怎么做?
我明确不想这样做,因为它慢了大约50倍:
Get-Mailbox | Where-Object DisplayName -like $name
有人可以帮我吗?
我发现有a couple of篇文章比较详细,似乎都归结为:“只需使用.GetNewClosure()
”。那对我不起作用:
> $dname = "Axel*"
> Get-Mailbox -Filter {DisplayName -like $dname}.GetNewClosure()
[...still no effect...]
答案 0 :(得分:0)
非常感谢上面的Tesla-这种解决方案实际上有效:
> $dname = "Axel*"
> $full_filter = "DisplayName -like '$dname'"
> Get-Mailbox -Filter $full_filter
它的速度应该是应该的。
太好了:)