我尝试在Exchange 2010服务器上的一组邮箱上执行批量操作。为了限制我需要操作的数字框,我想过滤结果。我知道我需要处理的是在2015-01-01之后创建的,所以我将它作为过滤值提供(可行):
$boxes = Get-Mailbox -filter { whenCreated -gt '2015-01-01' }
我希望稍后能够重用我的脚本,所以我尝试将其设置为接受参数,但它返回所有框(不起作用)......
$filterdate = '2015-01-01'; $boxes = Get-Mailbox -filter { whenCreated -gt $filterdate }
我的猜测是,当我提供字符串文字与提供字符串变量时,过滤器正在进行某种隐式类型转换
如何为变量提供-Filter?
编辑:
这也会返回未经过滤的列表:
$filterdate = [System.DateTime]'2015-01-01'; get-mailbox -filter { whencreated -gt $filterdate }
导致错误:
$filterdate = '2015-01-01'; get-mailbox -filter { whencreated -gt "$filterdate" }
答案 0 :(得分:1)
我确定问题是您在$filterdate
的脚本块范围内不存在变量{ whencreated -gt "$filterdate" }
。语法很好....直到你添加变量混合。非常确定,在该范围内,$filterdate
将为空。然后你得到了所有的邮箱,因为任何东西都大于null(当然接受它自己)。
1 -gt $null
"asdf" -gt $null
True
使用正确引用的字符串可以获得相同的结果。
-filter "whencreated -gt '$filterdate'"